使用c语言建立一有序的顺序表并实现线性表的基本操作(初始化、插入、删除、查找等)完整代码
时间: 2024-09-24 17:22:57 浏览: 108
在C语言中,我们可以创建一个简单的顺序表结构体,并实现一些基本操作,如初始化、插入、删除和查找。这里提供一个基础的顺序表实现,包括链表结构和函数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表节点
typedef struct Node {
int data; // 数据域
struct Node* next; // 指针域,指向下一个节点
} ListNode;
// 初始化一个空列表
ListNode* createList() {
ListNode* head = NULL;
return head;
}
// 插入元素到列表
void insert(ListNode** head, int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (newNode != NULL) {
newNode->data = value;
newNode->next = *head;
*head = newNode;
} else {
printf("Memory allocation failed.\n");
}
}
// 删除元素(在这里我们只实现了删除头部元素)
void deleteHead(ListNode** head) {
if (*head != NULL) {
ListNode* temp = *head;
*head = (*head)->next;
free(temp);
} else {
printf("List is empty.\n");
}
}
// 查找元素
ListNode* search(ListNode* head, int value) {
ListNode* current = head;
while (current != NULL) {
if (current->data == value)
return current;
current = current->next;
}
return NULL; // 如果没找到,返回NULL
}
// 打印整个列表
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
ListNode* list = createList();
// 初始化,插入和打印
insert(&list, 10);
insert(&list, 20);
insert(&list, 30);
printList(list);
// 删除头部元素
deleteHead(&list);
printList(list);
// 查找元素
ListNode* foundNode = search(list, 20);
if (foundNode)
printf("Found element %d at position.\n", foundNode->data);
else
printf("Element not found.\n");
return 0;
}
```
阅读全文