本專欄持續輸出數據結構題目集,歡迎訂閱。
文章目錄
- 題目
- 代碼
題目
請編寫程序,將 n 個整數順次插入一個初始為空的單鏈表的表頭。最后輸出單鏈表的表長。
本題旨在訓練學習者熟悉單鏈表的基本操作,不建議直接輸出 n。
輸入格式:
輸入首先在第一行給出非負整數 n(≤15);隨后一行給出 n 個 int 范圍內的整數,數字間以空格分隔。
輸出格式:
在一行中輸出單鏈表的表長。
輸入樣例:
5
1 2 3 4 5
輸出樣例:
5
代碼
#include <stdio.h>
#include <stdlib.h>// 定義鏈表節點結構
typedef struct Node {int data;struct Node* next;
} Node;// 創建新節點
Node* createNode(int data) {Node* newNode = (Node*)malloc(sizeof(Node));newNode->data = data;newNode->next = NULL;return newNode;
}// 計算鏈表長度
int getLength(Node* head) {int count = 0;Node* current = head;while (current != NULL) {count++;current = current->next;}return count;
}// 釋放鏈表內存
void freeList(Node* head) {Node* temp;while (head != NULL) {temp = head;head = head->next;free(temp);}
}int main() {int n, data;Node* head = NULL; // 初始為空鏈表// 讀取整數個數nscanf("%d", &n);// 順次插入n個整數到表頭for (int i = 0; i < n; i++) {scanf("%d", &data);Node* newNode = createNode(data);newNode->next = head; // 新節點指向當前頭節點head = newNode; // 更新頭節點為新節點}// 計算并輸出鏈表長度printf("%d\n", getLength(head));// 釋放鏈表內存freeList(head);return 0;
}