每一个点开我的文章的小伙伴大家好!
在发这篇文章的时候,我是一名大一的学生,我将在博客记载我的学习之路!
这是我的第五篇博客文章,是关于C语言数据结构的链表的各项基本操作。
写这篇文章的时候,我正在备考数据结构期末考试,所以在复习到链表这一个章节时把我复习的内容发上个人博客,希望各位在复习的小伙伴能参考参考。
这次的打代码时间比较紧,所以注释写的并不清晰。在这里给每一位点开我文章的小伙伴说
声不好意思,如果你们对代码有疑问,可以私信我,我会给出解释!
我个人觉得排序那个部分可能有点难以理解 (写排序算法比较初级)
接下来我会把各个操作给分解 文章末尾附上源码(Visual Studio2022完美运行)!
先给小伙伴们看一下页面:
页面的功能其实可以很多样,我这里只列出了其中的一部分,大家可以试着利用我发上来的子函数去搭配出一些新的功能,比如说:删除头插法建立的链表的相同结点
一、首先是代码开头的各种定义:
#define _CRT_SECURE_NO_WARNINGS //加上这个,我们就不用scanf_s,可以用scanf了
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct node //单链表结构体定义
{
int data;
struct node* next;
}Node;
二、接着是头插法、尾插法建立单链表
void Creat_Head(Node* L) //头插法
{
Node* p;
int i = 1;
printf("以头插法建立单链表\n");
printf("当输入 0 时结束\n");
while (1)
{
printf("输入第%d个元素:\n", i);
i++;
p = (Node*)malloc(sizeof(Node));
scanf("%d", &p->data);
if (p->data == 0) break;
else {
p->next = L->next;
L->next = p;
}
}
}
void Creat_Tail(Node* L) //尾插法
{
Node* p,*q;
q = L;
int i = 1;
printf("以尾插法建立单链表\n");
printf("当输入 0 时结束\n");
while(1)
{
printf("输入第%d个元素:\n