C语言实现单链表的创建及基本操作

2025-06-06 23:47:02

C语言实现单链表的创建及基本操作

C语言实现单链表的创建及基本操作

往期文章:C语言实现顺序表的创建及基本操作

这次主要是分享一下数据结构中单链表的创建及基本操作,这一部分也是属于比较基础的内容。但是越基础的东西我们越要投入精力去学习,不能眼高手低。我在编写这一部分的内容时就出现了许多错误,这也算是一次查漏补缺的博客吧,下面我们正式开始。

单链表的结构定义

首先我们先来看一下常规定义的单链表,一般情况下会包含数据域和指针域。例如:

typedef struct node{

//单链表的结构定义

int data;//定义int类型的数据域

struct node *next; //定义指针域

}node,*linklist;

这个地方会出现两个让人比较迷的东西:结构指针node和linklist。本质上而言,这两种类型是等价的。通常用linklist说明指针变量,强调它是某个单链表的头指针变量,定义为linklist L,L表示头指针。node用来定义单链表中结点的指针,例如node *p,p为结点的指针变量,p也可以定义为头结点。但是在方法的编写时,这两种定义会混合使用,非常容易迷惑我们的思维。所以我接下来的所有方法都只使用node来定义。

单链表的初始化

node *startlist(node *l){

//初始化单链表 并设置为空表

l=(node *)malloc(sizeof(node));

l->next=NULL;//使头结点的指针域为空,建立一个空的单链表

return l;

}

我这里有一个错误点,在方法体内为头结点分配内存空间的时候要注意,必须要返回指针,否则分配的内存在本方法运行结束后就会释放,相当于没分配内存。当然你也可以使用下面的方法,并在主函数中分配内存。

void startlist(node *l){

//初始化单链表 并设置为空表

l->next=NULL;//使头结点的指针域为空,建立一个空的单链表

}

int main(){

node *l,*m;

l=(node *)malloc(sizeof(node));//建立一个头结点 并动态分配存储空间

return 0;

}

头插法建立单链表

void creatfromhead(node *l) {

//利用头插法建立单链表

node *p;//新建一个结点指针

int i=1;

int j;

while(i!=0){

scanf("%d",&j);

if(j!=-1){

最新发表
友情链接

Copyright © 2022 日本世界杯_林高远世界杯 - edenyn.com All Rights Reserved.