用c语言编写程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输人,当输入0时,表示结束,结果倒着输出(链表头结点的data域不放数据,表空条件是next==NULL)。
时间: 2024-02-20 08:59:25 浏览: 89
以下是使用 C 语言实现该程序的代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int value;
struct ListNode* next;
};
int main() {
// 建立一个带有头结点的单向链表
struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next = NULL;
struct ListNode* p = head;
while (1) {
int x;
printf("请输入一个整数:");
scanf("%d", &x);
if (x == 0) {
break;
}
struct ListNode* node = (struct ListNode*)malloc(sizeof(struct ListNode));
node->value = x;
node->next = NULL;
p->next = node;
p = node;
}
// 倒着输出链表
p = head->next;
int stack[1000], top = -1;
while (p) {
stack[++top] = p->value;
p = p->next;
}
while (top >= 0) {
printf("%d\n", stack[top--]);
}
// 释放链表结点空间
p = head;
while (p) {
struct ListNode* temp = p;
p = p->next;
free(temp);
}
return 0;
}
```
该程序使用 `struct ListNode` 结构体来表示链表的结点,其中每个结点包含一个 `value` 成员和一个指向下一个结点的 `next` 指针成员。程序首先建立一个带有头结点的单向链表,然后使用栈来倒着输出链表的值。具体地,程序遍历链表,将每个结点的值依次压入栈中,然后再依次弹出栈顶元素并输出,即可实现倒着输出链表的效果。最后,程序释放链表结点的空间。
阅读全文