1.编写程序,实现从键盘中输入五个整数,并将五个数输出(注明:必须用尾插
入法建立单链表来存储该五个数)。
2.编写程序,在第 1 题的基础上再分别在链表中插入一个元素以及删除一个元素,
再输出链表中的所有元素
首先,定义一个单链表的结构体,用来存储整数值和指向下一个结构体的指针
然后,在main()函数中定义一个头节点指针,并用它来存储整个链表
接下来,实现从键盘输入五个整数并将它们尾插入链表中
最后,实现链表中的插入和删除操作,并输出链表中的所有元素
下面是一个可行的c语言程序,该程序实现了从键盘输入五个整数并存储在链表中,然后插入和删除一个元素,最后输出链表中的元素。
这是第一问的代码:
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node* next;
};
int main() {
int i;
struct node *head, *p, *q;
head = NULL; // 初始化头指针
for (i = 0; i < 5; i++) {
// 分配内存
q = (struct node*)malloc(sizeof(struct node));
scanf("%d", &q->data); // 从键盘输入数据
q->next = NULL; // 设置链表尾
if (head == NULL) {
head = q; // 如果是第一个节点,则将头指针指向该节点
} else {
p->next = q; // 尾插入法,将新节点插入到链表尾
}
p = q; // 将新节点作为下一个节点的前驱
}
p = head; // 设置遍历指针
while (p != NULL) {
printf("%d ", p->data); // 输出节点的数据
p = p->next; // 指向下一个节点
}
return 0;
}
这是第二问的代码:
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
};
int main()
{
struct node *head, *p, *q;
int i;
head = NULL;
for(i=0; i<5; i++)
{
p = (struct node *)malloc(sizeof(struct node));
printf("输入第%d个数:", i+1);
scanf("%d", &p->data);
p->next = NULL;
if(head == NULL)
head = p;
else
q->next = p;
q = p;
}
p = head;
printf("链表中的元素是:\n");
while(p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
// 在链表中插入一个元素
p = (struct node *)malloc(sizeof(struct node));
p->data = 99;
p->next = head;
head = p;
// 删除一个元素
p = head;
head = head->next;
free(p);
p = head;
printf("