【问题描述】从键盘终端输入若干整数,为其创建带头节点的单链表存储结构 【输入形式】 【输出形式】 【样例输入】 5 12 23 32 33 45 【样例输出】12 23 32 33 45 【样例说明】第一行的数为单链表中元素的个数,后面为各元素的值 【评分标准】 #include <iostream> using namespace std; struct LNode { int data; LNode *next; }; typedef LNode *LinkList; void createList(LinkList &h,int n) { } void printList(LinkList h) { LNode *p; p=h->next; while(p) { cout<<p->data<<" "; p=p->next; } cout<<endl; } int main() { LinkList h; int n; cin>>n; createList(h,n); printList(h); return 0; }
时间: 2024-02-05 15:02:38 浏览: 76
这段代码中,createList 函数的实现可以如下:
```c++
void createList(LinkList &h, int n) {
h = new LNode; // 创建头节点
LNode *p = h;
for (int i = 0; i < n; i++) {
int x;
cin >> x; // 输入节点的值
LNode *q = new LNode; // 创建新节点
q->data = x;
p->next = q; // 将新节点插入到链表末尾
p = q;
}
p->next = nullptr; // 将链表的最后一个节点的 next 指针置空
}
```
createList 函数首先创建一个头节点,然后循环 n 次,在每次循环中读入一个整数 x,创建一个新节点 q 并将 x 存入其中,最后将新节点 q 插入到链表的末尾。最后将链表的最后一个节点的 next 指针置空。
在 main 函数中,首先输入一个整数 n,然后调用 createList 函数创建一个长度为 n 的链表,最后调用 printList 函数输出链表中所有节点的数据。
相关问题
从键盘终端输入若干整数,为其创建带头节点的单链表存储结构
好的,以下是使用 C 语言创建带头节点的单链表来存储输入的若干整数的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data; // 数据域
struct Node* next; // 指针域
} Node;
// 创建带头节点的单链表
Node* createLinkedList() {
Node* head = (Node*)malloc(sizeof(Node)); // 创建头节点
head->next = NULL; // 头节点的指针域初始化为 NULL
return head;
}
// 在链表尾部插入节点
void insert(Node* head, int data) {
Node* node = (Node*)malloc(sizeof(Node)); // 创建新节点
node->data = data; // 新节点的数据域为传入的数据
node->next = NULL; // 新节点的指针域初始化为 NULL
Node* p = head;
while (p->next != NULL) { // 找到链表尾部
p = p->next;
}
p->next = node; // 将新节点插入到链表尾部
}
// 输出链表中的所有节点
void printLinkedList(Node* head) {
Node* p = head->next; // 从首节点开始遍历
while (p != NULL) {
printf("%d ", p->data); // 打印节点数据
p = p->next; // 移动指针到下一个节点
}
printf("\n"); // 换行
}
int main() {
int n, data;
printf("请输入整数的个数:");
scanf("%d", &n);
Node* head = createLinkedList(); // 创建带头节点的单链表
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个整数:", i + 1);
scanf("%d", &data);
insert(head, data); // 在链表尾部插入节点
}
printf("链表中的元素为:");
printLinkedList(head); // 输出链表中的所有节点
return 0;
}
```
运行示例:
```
请输入整数的个数:5
请输入第 1 个整数:1
请输入第 2 个整数:2
请输入第 3 个整数:3
请输入第 4 个整数:4
请输入第 5 个整数:5
链表中的元素为:1 2 3 4 5
```
【问题描述】创建一个单链表,并求其最大值。 【输入形式】从键盘输入若干个整数,以空格分开,-1作为输入结束。 【输出形式】如果存在最大值,则输出;否则输出No answer! 【样例输入】65 12 6 78 5 -1 【样例输出】78
以下是 Python 的实现代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
# 从数组创建单链表
def createLinkedList(nums):
if not nums:
return None
head = ListNode(nums[0])
cur = head
for i in range(1, len(nums)):
node = ListNode(nums[i])
cur.next = node
cur = cur.next
return head
# 求单链表的最大值
def getMaxValue(head):
if not head:
return "No answer!"
max_val = head.val
cur = head.next
while cur:
if cur.val > max_val:
max_val = cur.val
cur = cur.next
return max_val
# 从键盘输入若干个整数,以空格分开,-1作为输入结束
nums = list(map(int, input().split()))
head = createLinkedList(nums)
print(getMaxValue(head))
```
输入样例:65 12 6 78 5 -1
输出样例:78
阅读全文