给我一个用c语言实现利用链表的插入运算建立线性链表,然后利用链表的查找、删除、计数、输出等运算反复实现链表的这些操作(插入、删除、查找、计数、输出单独写成函数的形式),并能在屏幕上输出操作前后的结果
时间: 2023-08-10 16:04:38 浏览: 101
用C语言实现链表的各种操作
5星 · 资源好评率100%
好的,以下是用C语言实现利用链表的插入运算建立线性链表,然后利用链表的查找、删除、计数、输出等运算反复实现链表的这些操作(插入、删除、查找、计数、输出单独写成函数的形式),并能在屏幕上输出操作前后的结果的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 节点结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指针域
} Node;
// 初始化链表
Node* initList() {
Node* head = (Node*)malloc(sizeof(Node));
head->next = NULL;
return head;
}
// 插入操作
void insertNode(Node* head, int data, int pos) {
Node* p = head;
for(int i = 0; i < pos && p; i++) {
p = p->next;
}
if(!p) {
printf("插入位置错误!\n");
return;
}
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = p->next;
p->next = newNode;
}
// 删除操作
void deleteNode(Node* head, int data) {
Node* p = head;
while(p->next && p->next->data != data) {
p = p->next;
}
if(!p->next) {
printf("链表中不存在该元素!\n");
return;
}
Node* q = p->next;
p->next = q->next;
free(q);
}
// 查找操作
Node* searchNode(Node* head, int data) {
Node* p = head->next;
while(p && p->data != data) {
p = p->next;
}
if(!p) {
printf("链表中不存在该元素!\n");
}
return p;
}
// 计数操作
int countNode(Node* head) {
Node* p = head->next;
int count = 0;
while(p) {
count++;
p = p->next;
}
return count;
}
// 输出操作
void printList(Node* head) {
Node* p = head->next;
while(p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
Node* head = initList(); // 初始化链表
insertNode(head, 1, 1); // 在第一个位置插入元素1
insertNode(head, 2, 2); // 在第二个位置插入元素2
insertNode(head, 3, 1); // 在第一个位置插入元素3
printList(head); // 输出链表:3 1 2
deleteNode(head, 2); // 删除元素2
printList(head); // 输出链表:3 1
Node* p = searchNode(head, 3); // 查找元素3
if(p) {
printf("查找成功,该元素的地址为:%p\n", p);
}
int count = countNode(head); // 计数
printf("链表中元素的个数为:%d\n", count);
return 0;
}
```
这段代码实现了利用链表的插入运算建立线性链表,并可以反复进行插入、删除、查找、计数、输出等操作。其中,节点结构体`Node`包含了数据域`data`和指针域`next`,函数`initList`用来初始化链表,函数`insertNode`用来实现插入操作,函数`deleteNode`用来实现删除操作,函数`searchNode`用来实现查找操作,函数`countNode`用来实现计数操作,函数`printList`用来输出链表。在`main`函数中,我们初始化了一个链表,依次进行插入、删除、查找、计数、输出等操作,并在每一个操作之后输出链表的结果。
阅读全文