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

2248 ワード

6-6末尾挿入による単一チェーンテーブルの作成(C)(25点)
本題では,2つの関数を実現し,n個のデータを入力し,テールプラグ法を用いて単一チェーンテーブルを作成し,印刷することを要求する.例えば、4を入力し、3 7 9 5を入力すると、出力3 7 9 5が印刷されます.
チェーンテーブルノード構造の定義:
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行にチェーンテーブルの各ノードのデータを出力し、スペースで区切りますが、行末に余分なスペースはありません.
3 7 9 5

 
struct Node * buildLinkedList(int* arr, int n) {
	int i;
	struct Node *head,*r,*s;
	head=(struct Node*)malloc(sizeof(struct Node));
	head->link =NULL;
	r=head;
	for(i=0; idata =arr[i];
		r->link=s;
		r=s;
	}
	r->link=NULL;
	return head;
}
void printLinkedList(struct Node* head) { //     
	struct Node *p;
	p=head;
	p=p->link;
	printf("%d",p->data);
	p=p->link ;
	while(p!=NULL) {
		printf(" %d",p->data);
		p=p->link ;
	}
	printf("
"); }