从键盘上依次输入21,18,30,75,45,56,尾插法创建单链表,并输出单链表中的个元素值,分别在单链表的第三个位置和第九个位置插入67和10,给出插入成功或失败的信息,并输出单链表中的各元素值,删除单链表中的第六个数据元素和第八个数据元素,给出删除成功或失败的信息,并输出单链表中的各元素值,取单链表中的第五个数据元素和第七个数据元素,用main函数来调用相关函数,输入实验数据并观察实验结果
时间: 2023-04-02 22:04:36 浏览: 170
单链表的基本操作(实验)
我可以回答这个问题。根据题目要求,可以按照以下步骤进行:
1. 创建一个单链表,使用尾插法插入21,18,30,75,45,56这六个元素,依次链接起来。
2. 输出单链表中的各元素值,即21,18,30,75,45,56。
3. 在单链表的第三个位置插入67,插入成功。
4. 在单链表的第九个位置插入10,插入失败,因为单链表只有六个元素。
5. 输出单链表中的各元素值,即21,18,67,30,75,45,56。
6. 删除单链表中的第六个数据元素,即45,删除成功。
7. 删除单链表中的第八个数据元素,删除失败,因为单链表只有六个元素。
8. 输出单链表中的各元素值,即21,18,67,30,75,56。
9. 取单链表中的第五个数据元素,即45,和第七个数据元素,即56。
以下是相关函数的代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node, *LinkedList;
LinkedList createLinkedList() {
LinkedList head = (LinkedList) malloc(sizeof(Node));
head->next = NULL;
return head;
}
void insert(LinkedList head, int data, int position) {
Node *p = head;
int i = ;
while (p && i < position - 1) {
p = p->next;
i++;
}
if (!p || i > position - 1) {
printf("插入失败\n");
return;
}
Node *newNode = (Node *) malloc(sizeof(Node));
newNode->data = data;
newNode->next = p->next;
p->next = newNode;
printf("插入成功\n");
}
void delete(LinkedList head, int position) {
Node *p = head;
int i = ;
while (p->next && i < position - 1) {
p = p->next;
i++;
}
if (!p->next || i > position - 1) {
printf("删除失败\n");
return;
}
Node *q = p->next;
p->next = q->next;
free(q);
printf("删除成功\n");
}
int get(LinkedList head, int position) {
Node *p = head->next;
int i = 1;
while (p && i < position) {
p = p->next;
i++;
}
if (!p || i > position) {
printf("取值失败\n");
return -1;
}
return p->data;
}
void printLinkedList(LinkedList head) {
Node *p = head->next;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
LinkedList head = createLinkedList();
insert
阅读全文