这次采用了分文件开发,一共分三个文件:
1、MyCode.h -- 头文件
存放了定义的函数以及需要的头文件
2、MyCode.cpp -- 函数文件
对头文件定义的函数进行书写
3、Text01.cpp -- 主函数
进行函数的调用和运行
MyCode.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
// 这是一个定义函数的库
// 里面定义了单链表的一些基本操作
/*
* 初始化函数
* 增 :头插法、尾插法、在指定数据后插入
* 删 :删除某个数据
* 查 :查找函数
* 改 :( )
* 展示整个链表的数据
* 统计链表数据的函数
*/
typedef struct Node {
int data;
struct Node* next;
}Node, *Linklist;
// 初始化函数
Linklist InitList();
// 头插法
Linklist Heart_insert(Linklist l, int k);
// 尾插法
Linklist Rear_insert(Linklist l, int k);
// 查找
Node* find(Linklist l, int x);
// 在指定数据后插入数据
Linklist Insert(Linklist l, int x, int k);
// 删除指定数据
Linklist Delet(Linklist l, int k);
// 统计链表中数据的个数
int get_size(Linklist l);
// 展示函数
void Show(Linklist l);
MyCode.cpp
#include "MyCode.h"
// 初始化一个带头结点的单链表
Linklist InitList() {
Node* h = (Node*)malloc(sizeof(Node));
if (h == NULL) {
printf("申请内存失败\n");
return NULL;
}
h->next = NULL;
return h;
}
// 头插法
Linklist Heart_insert(Linklist l, int k) {
Node* s = (Node*)malloc(sizeof(Node));
s->data = k;
s->next = l->next;
l->next = s;
return l;
}
// 尾插法
Linklist Rear_insert(Linklist l, int k) {
Node* p = l;
while (p->next != NULL) {
p = p->next;
}
Node* s = (Node*)malloc(sizeof(Node));
s->data = k;
s->next = p->next;
p->next = s;
return l;
}
// 查找
Node* find(Linklist l, int x) {
Node* p = l->next;
while (p != NULL && p->data != x) {
p = p->next;
}
return p;
}
// 在指定数据k后插入数据x
Linklist Insert(Linklist l, int x, int k) {
Node* p = find(l, x);
if (p == NULL) {
printf("数据不存在,不能插入\n");
return l;
}
else {
Node* s = (Node*)malloc(sizeof(Node));
s->data = k;
s->next = p->next;
p->next = s;
return l;
}
}
// 删除指定数据
Linklist Delet(Linklist l, int k) {
if (l->next == NULL) {
printf("空链表不能执行删除操作\n");
return l;
}
Node* p = l;
Node* q = l->next;
while (q != NULL && q->data != k) {
p = q;
q = q->next;
}
if (q == NULL) {
printf("要删除的数据不存在\n");
return l;
}
p->next = q->next;
free(q);
q = NULL; // 防止 q 变成野指针
return l;
}
// 统计链表中数据的个数
int get_size(Linklist l) {
Node* p = l->next;
int sum = 0;
while (p != NULL) {
sum++;
p = p->next;
}
return sum;
}
// 展示函数
void Show(Linklist l) {
Node* p = l->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
Test01.cpp
#include "MyCode.h"
int main() {
Linklist L = NULL;
L = InitList();
for (int i = 1; i < 6; i++) {
L = Rear_insert(L, i);
}
L = Insert(L, 1, 6);
L = Delet(L, 4);
int sum = get_size(L);
Show(L);
printf("%d", sum);
}
将这三个文件导入成这个样子就可以运行啦!
详细的源码讲解可以看下面的文章:
https://blog.csdn.net/2301_80147864/article/details/147447904?spm=1001.2014.3001.5502
Tips:
OK,最后感谢您能看到这里,如果感觉内容还不错的话能不能给我一个点赞加关注,您的认可是我继续创作的最大动力!