用C语言实现一程序:线性表链式结构存储数据,用C语言实现线性表的初始化、插入操作、删除操作、显示线性表中所有元素、线性表的逆序操作、统计线性表中元素个数、判断线性表是否为空、在线性表中查找某个元素等。
时间: 2024-10-10 17:15:10 浏览: 52
在C语言中,我们可以创建一个链表结构来存储数据。下面是一个简单的链表实现,包括初始化、插入、删除、显示元素、逆序、计数、检查空表以及查找的操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指针域,指向下一个节点
} Node;
// 初始化链表
Node* createList() {
return (Node*) malloc(sizeof(Node)); // 分配内存并返回头结点
}
// 插入新元素
void insert(Node** head, int value) {
Node* newNode = (Node*) malloc(sizeof(Node));
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
// 删除指定位置的元素
void deleteElement(Node** head, int index) {
if (*head == NULL) return;
if (index == 0) {
Node* temp = *head;
*head = (*head)->next;
free(temp);
return;
}
Node* current = *head;
for (int i = 0; i < index - 1 && current != NULL; i++) {
current = current->next;
}
if (current == NULL) return;
Node* temp = current->next;
current->next = temp->next;
free(temp);
}
// 显示链表元素
void display(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
// 逆序链表
void reverseList(Node** head) {
Node* prev = NULL;
Node* current = *head;
Node* nextTemp = NULL;
while (current != NULL) {
nextTemp = current->next;
current->next = prev;
prev = current;
current = nextTemp;
}
*head = prev;
}
// 统计元素个数
int countElements(Node* head) {
int count = 0;
Node* temp = head;
while (temp != NULL) {
count++;
temp = temp->next;
}
return count;
}
// 判断链表是否为空
int isEmpty(Node* head) {
return head == NULL;
}
// 查找元素
int search(Node* head, int value) {
Node* temp = head;
while (temp != NULL) {
if (temp->data == value) return 1; // 找到返回1
temp = temp->next;
}
return 0; // 没找到返回0
}
// 主函数演示
int main() {
Node* listHead = createList();
// ... 其他操作 ...
return 0;
}
```
以上代码实现了基本的链表操作。在`main()`函数里,你可以按照需要添加对这些操作的具体应用。
阅读全文