浙大データ構造、頭挿しチェーンテーブルの構築
1970 ワード
6-7頭差し法単鎖表作成(C)(25点)
この問題では、2つの関数を実現し、n個のデータを入力し、ヘッドプラグ法を用いて単一チェーンテーブルを作成し、印刷する必要があります.例えば、4を入力し、3 7 9 5を入力すると、出力5 9 7 3が印刷されます.
チェーンテーブルノード構造の定義:
関数インタフェースの定義:
ここで、
審判試験プログラムのサンプル:
サンプルを入力:
入力には2行が含まれます.第1の動作データの個数nは、100000を超えない.第2の動作n個のスペースで区切られた整数で、int値の範囲を超えない.
出力サンプル:
1行にチェーンテーブルの各ノードのデータを出力し、スペースで区切りますが、行末に余分なスペースはありません.
この問題では、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;
}