编写程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输人,当输入0时,表示结束,结果倒着输出(链表头结点的data域不放数据,表空条件是next==NULL)。
时间: 2024-02-20 08:59:25 浏览: 54
以下是使用 Python 语言实现该程序的代码:
```python
class ListNode:
def __init__(self, value=None):
self.value = value
self.next = None
# 建立一个带有头结点的单向链表
head = ListNode()
p = head
while True:
x = int(input("请输入一个整数:"))
if x == 0:
break
node = ListNode(x)
p.next = node
p = node
# 倒着输出链表
p = head.next
stack = []
while p:
stack.append(p.value)
p = p.next
while stack:
print(stack.pop())
```
该程序使用 `ListNode` 类来表示链表的结点,其中每个结点包含一个 `value` 域和一个 `next` 域,分别表示结点的值和指向下一个结点的指针。程序首先建立一个带有头结点的单向链表,然后使用栈来倒着输出链表的值。具体地,程序遍历链表,将每个结点的值依次压入栈中,然后再依次弹出栈中的值并输出,即可实现倒着输出链表的效果。
相关问题
编写程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入0时,表示结束,实现数据的倒序输出
以下是Python语言实现的代码:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
head = Node() # 创建头结点
cur = head
while True:
data = int(input("请输入一个整数:"))
if data == 0:
break
node = Node(data)
cur.next = node
cur = node
cur = head.next
stack = []
while cur:
stack.append(cur.data)
cur = cur.next
while stack:
print(stack.pop(), end=" ")
```
思路说明:
1. 首先定义一个节点类 `Node`,包含数据域 `data` 和指针域 `next`;
2. 创建一个头结点 `head`;
3. 循环输入整数并创建新节点,将新节点插入到链表中;
4. 定义一个指针 `cur` 指向链表第一个节点,然后遍历整个链表,将每个节点的数据依次放入栈中;
5. 最后依次从栈中弹出元素并输出即可实现数据的倒序输出。
编写程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输人,当输入0时,表示结束(链表头结点的data域不放数据,表空条件是next==NULL)。
好的,以下是使用 C 语言编写的程序,可以实现建立一个带有头结点的单向链表:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结点
typedef struct node {
int data;
struct node *next;
} Node;
int main() {
Node *head, *tail, *p;
int n;
// 创建头结点
head = (Node *) malloc(sizeof(Node));
head->next = NULL;
tail = head;
// 循环读入数据
while (1) {
printf("请输入数据(输入 0 结束):");
scanf("%d", &n);
if (n == 0) {
break;
}
// 创建新结点
p = (Node *) malloc(sizeof(Node));
p->data = n;
p->next = NULL;
// 将新结点插入到链表尾部
tail->next = p;
tail = p;
}
// 打印链表中的数据
printf("链表中的数据为:");
p = head->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
// 释放链表中的内存空间
p = head;
while (p != NULL) {
head = p->next;
free(p);
p = head;
}
return 0;
}
```
在程序运行时,会循环读入数据,当输入 0 时表示结束。每次输入一个数,就会创建一个新结点,并将其插入到链表尾部。当读入完所有数据后,程序会打印链表中的数据,并释放链表中的内存空间。
阅读全文