依次链表与顺序表采用头插法插入元素-1,21,13,24,8;要求用c写出代码且顺序表元素只有以上几个
时间: 2024-09-08 18:02:33 浏览: 71
21春北京理工大学《数据结构与算法》在线作业参考答案.docx
5星 · 资源好评率100%
首先,我们定义一个顺序表和一个链表的数据结构,然后分别实现头插法插入元素的函数。下面是C语言的实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 顺序表的结构定义
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SeqList;
// 链表的节点定义
typedef struct Node {
int data;
struct Node *next;
} ListNode, *LinkList;
// 顺序表的头插法插入元素函数
void insertHeadSeqList(SeqList *list, int element) {
if (list->length >= MAXSIZE) {
printf("顺序表已满,无法插入。\n");
return;
}
for (int i = list->length; i > 0; i--) {
list->data[i] = list->data[i - 1]; // 将元素向后移动
}
list->data[0] = element; // 插入新元素
list->length++; // 长度增加
}
// 链表的头插法插入元素函数
void insertHeadLinkList(LinkList *list, int element) {
ListNode *newNode = (ListNode *)malloc(sizeof(ListNode));
if (!newNode) {
printf("内存分配失败。\n");
return;
}
newNode->data = element;
newNode->next = *list; // 新节点指向原头结点
*list = newNode; // 更新头结点
}
int main() {
// 初始化顺序表
SeqList seqList = {{-1, 21, 13, 24, 8}, 5};
// 初始化链表
LinkList linkList = NULL;
// 插入元素后,顺序表和链表的变化
printf("顺序表初始状态: ");
for (int i = 0; i < seqList.length; i++) {
printf("%d ", seqList.data[i]);
}
printf("\n");
int elements[] = {1, 2, 3, 4, 5}; // 待插入的元素
for (int i = 0; i < 5; i++) {
insertHeadSeqList(&seqList, elements[i]);
}
printf("顺序表插入元素后: ");
for (int i = 0; i < seqList.length; i++) {
printf("%d ", seqList.data[i]);
}
printf("\n");
// 链表的插入操作和打印结果类似,略去打印代码...
return 0;
}
```
注意:上面的代码中,链表插入操作的示例略去具体的打印结果代码,您可以在实际使用中自行添加。另外,顺序表在实际应用中可能需要根据具体情况来设计,这里仅提供了基础的实现。
阅读全文