利用c编写一个程序,要求建立带表头节点的单链线性表L,建立后(逆序建立),再输出
时间: 2024-03-23 18:37:46 浏览: 50
好的,下面是代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
void createList(Node** pL, int* arr, int n) {
Node* head = (Node*)malloc(sizeof(Node));
head->next = NULL;
*pL = head;
for (int i = n - 1; i >= 0; i--) {
Node* node = (Node*)malloc(sizeof(Node));
node->data = arr[i];
node->next = head->next;
head->next = node;
}
}
void printList(Node* L) {
printf("L: ");
Node* p = L->next;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(int);
Node* L;
createList(&L, arr, n);
printList(L);
return 0;
}
```
这里使用了头插法逆序建立链表,即从后往前遍历数组,每次新建一个节点并将其插入到头节点之后。最后输出链表时,从头节点的下一个节点开始遍历即可。
阅读全文