c语言链表中文搜索,C语言链表详解(通俗易懂,超详细)

前言 想要很好的学好链表 我们首先要了解链表的优缺点 面试优点 1.插入 删除 不需移动其他元素, 只需改变指针 2:链表各个节点在内存中空间不要求连续!空间利用率高 缺点:1.访问数组元素效率低 2:数组的存储空间连续,内存空间利

前言:想要很好的学好链表,我们首先要了解链表的优缺点(面试)

优点:1.插入 删除 不需移动其他元素, 只需改变指针;2:链表各个节点在内存中空间不要求连续!空间利用率高

缺点:1.访问数组元素效率低;2:数组的存储空间连续,内存空间利用率低

重要!!!欢迎对撸代码有兴趣的同学一起交流,大学生也可!!!带你一起写项目致富!QQ:1324252797

1.单链表

通俗讲就是结构体变量与结构体变量链接在一起.

链表结构体变量:一般由 数据域(任何数据)和指针域 组成。也就是所说的结点。

结点组成:

struct Node

{

int data; //数据域

struct Node* next; //指针域

};

5e8d165c2cd6737a98929673e7c3637f.png

其实通俗来讲链表就像一列火车,每一借车厢里面装载的货物就是各种各样的数据,而连接他们的就是通过指针。

2.如何连接他们呢?

#Include

struct Node

{

int data;

struct Node* next;

}

int main()

{

struct Node Node1={1,NULL};//Node1,其数据域里面存放1,指针域为空

struct Node Node1={2,NULL};

struct Node Node1={3,NULL};//定义好了车厢,接下来要连接车厢

Node1.next=&Node2;//将Node2的地址发送给Node1,完成链接

Node2.next=&Node3;

}

此为静态链表(不经常使用)

3.动态链表

这种链表在初始时不一定分配足够的空间, 但是在后续插入的时候需要动态申请存储空间,并且存储空间不一定连续, 在进行插入和删除时则不需要移动元素, 修改指针域即可,所以仍然具有链表的主要优点,链表结构可以是动态地分配存储的,即在需要时才开辟结点的存储空间,实现动态链接。(来自百度百科)

3.1如何建立动态链表?

步骤:

**1.创建链表(造个火车头)

2.创建结点

3.插入结点

4.删除结点

struct Node*createList()

{

//火车头

struct Node*headNode=(struct Node*)malloc(sizeof(struct Node));

//此处malloc作用是向系统申请内存

//初始化变量

headNode->next=NULL;

return headNode;

}

之后在主函数中调用 struct Node*createList() 函数

接下来创建结点:

```c

struct Node*createList(int data)//创建结点区别在于多了数据域

{

struct Node*newNode=(struct Node*)malloc(sizeof(struct Node));//动态内存申请

newNode->data=data;

newNode->next=NULL;//初始化变量

}

结点的插入方法一般有:头插法;尾插法。

我们先来讲链表的打印

链表的打印可以看作,火车到站,装卸工人从你选择的地方拿着记录本,依次往后记录着每节车厢的货物。

void printList(struct Node*headList)

{

struct Node* pMove=headNode->next;//pMove就是装卸工人

while(pMove)

{

printf("%d",pMove->data);//记录

pMove=pMove->next;//向下一节车厢移动

}

printf("\n");

}

插入函数(头插法)

void insertNodeByhead(struct Node* headNode)

{

struct Node*newNode=createNode(data);//创建结点

newNode->next=headNode->next;

headNode->next=newNode;

}

注:此处不懂可以观看此视频第30分钟:https://www.bilibili.com/video/av35425556?from=search&seid=642529453300322955

本文章大多灵感来源于此,鸣谢作者!

重要!!!欢迎对撸代码有兴趣的同学一起交流,大学生也可!!!带你一起写项目致富!QQ:1324252797

以上信息来源于网络,如有侵权,请联系站长删除。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值