浙大データ構造、頭挿しチェーンテーブルの構築

1970 ワード

6-7頭差し法単鎖表作成(C)(25点)
この問題では、2つの関数を実現し、n個のデータを入力し、ヘッドプラグ法を用いて単一チェーンテーブルを作成し、印刷する必要があります.例えば、4を入力し、3 7 9 5を入力すると、出力5 9 7 3が印刷されます.
チェーンテーブルノード構造の定義:
struct Node {    //    
    int data;    //  
    struct Node* link;    //          
};

関数インタフェースの定義:
/*         :          */
struct Node* buildLinkedList(int* arr, int n);    /*          */
void printLinkedList(struct Node* head);          /*      */

ここで、arrおよびnはユーザが入力したパラメータであり、nの値は100000を超えない.headは、単一チェーンテーブルのヘッダポインタである.
審判試験プログラムのサンプル:
#include 
#include //malloc  

struct Node {    //    
    int data;    //  
    struct Node* link;    //          
};

/*         :          */
struct Node* buildLinkedList(int* arr, int n);    /*          */
void printLinkedList(struct Node* head);          /*      */

int main(int argc, char const *argv[]) {
    int n, i;
    int* a;
    scanf("%d", &n);
    a = (int*)malloc(n * sizeof(int));    //            
    for (i = 0; i < n; ++i) {
        scanf("%d", &a[i]);
    }

    struct Node* head = NULL;    //        head

    //    ,          head    
    head = buildLinkedList(a, n);

    //    :     head   。
    printLinkedList(head);

    free(a);    //      

    return 0;
}

/*          */

サンプルを入力:
入力には2行が含まれます.第1の動作データの個数nは、100000を超えない.第2の動作n個のスペースで区切られた整数で、int値の範囲を超えない.
4
3 7 9 5

出力サンプル:
1行にチェーンテーブルの各ノードのデータを出力し、スペースで区切りますが、行末に余分なスペースはありません.
5 9 7 3
struct Node * buildLinkedList(int* arr, int n){
    struct Node *head,*op;
    head=(struct Node*)malloc(sizeof(struct Node));
    head->link =NULL;
    for(int i=0;idata =arr[i];
    	op->link=head->link;
    	head->link=op;
	}
    return head;
}