写一个满足线性表顺序存储结构下基本操作的实现(初始化、建表、取值、查找、插入、删除、两个非递减有序链表的归并等)。的c语言代码、
时间: 2024-09-20 22:15:22 浏览: 55
数据结构 线性表 顺序表基本操作
4星 · 用户满意度95%
为了实现线性表的顺序存储结构,并完成基本操作如初始化、建表、取值、查找、插入、删除以及两个非递减有序链表的合并,我们可以创建一个包含数据元素数组和一些辅助函数的结构。这里是一个简单的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义线性表节点结构体
typedef struct {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} Node;
// 初始化线性表
void initList(Node** head) {
*head = NULL;
}
// 插入元素到线性表末尾
void insert(int value, Node** head) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return;
}
newNode->data = value;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != NULL)
temp = temp->next;
temp->next = newNode;
}
}
// 查找元素
int search(int value, Node* head) {
Node* temp = head;
while (temp != NULL) {
if (temp->data == value)
return 1; // 成功找到
temp = temp->next;
}
return 0; // 没有找到
}
// 删除元素
void deleteElement(int value, Node** head) {
if (*head == NULL) return;
if ((*head)->data == value) {
Node* temp = *head;
*head = (*head)->next;
free(temp);
return;
}
Node* current = *head;
while (current->next != NULL && current->next->data != value) {
current = current->next;
}
if (current->next != NULL) {
Node* toRemove = current->next;
current->next = current->next->next;
free(toRemove);
}
}
// 合并两个非递减有序链表
Node* mergeSortedLists(Node* list1, Node* list2) {
if (list1 == NULL) return list2;
阅读全文