单链表-乡巴老也能看懂
来源:互联网 发布:linux gcc编译器简介 编辑:程序博客网 时间:2024/06/06 18:24
单链表-乡巴老也能看懂
链表
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑
顺序是通过链表中的指针链接次序实现的。链表由一系列节点(链表中没一个
元素成为节点) 组成,节点可以在运行时动态生成。每个节点包括两个部分;
一个时存储数据元素的数据域,另一个时存储下一个节点地址的指针域。
相比较的数组,链表结构与之有如下区别:
(1) 数组通常在创建的时候就需要设定数据的大小,使用链表结构可以
克服数组需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空
间,实现灵活的内存动态管理:
(2) 链表由于增加了节点的指针域,空间开销比较大:
(3) 在中间插入或删除元素(节点)时,链表非常的灵活,不需要移动
其他元素(节点)的位置:
(4) 数组可以随机存储数据 , 但是链表不允许随机存取。
链表 (由多个节点组成,分散存储 由指针链接起来呢,)
节点组成(两部分:1数据域 2.指针域-存储下一个节点的指针)
节点1 节点2 节点3 节点4
数据 指针域 数据 指针域 数据 指针域 数据 指针域
指向节点2 指向节点3 指向节点4 指向NULL
插入节点
节点1要插入节点
数据 指针域数据 指针域
直线新的节点 指针指向要插入位置后面节点的地址
最后他们组成了一个新的链表
方式1 头指针 头指针指向第一个数据节点
head = NULL 需要判断 是否为空
方式2 头节点
头节点 数据不使用 指针指向
//结构的数据类型typedf struct Node{int data;struct Node*next;}Node;//链表类型typedef struct List{Node *head;}List;//1创建节点Noode* CreateNode (int data){Node *PtrNode = malloc(sizeof(Node));PtrNode->data = data;PtrNode->next = NULL;return PtrNode;}//2向头结点位置插入新结点、void PushHead(List *list , int data){Node*PtrNew = CreateNode(data); //PtrNew->next =list->head;//如果链表有节点list->head = PtrNew ;//如果链表中无节点}//遍历链表void tralve (List *list){printf("链表中的元素");Node *PtrHead= list->head;//操作是指针指向可以发生变化if(!PtrHead){put("空");}while(PtrHead){printf("%d",PtrHead->data);PtrHead = PtrHead->next;}printf("\n");}//4 计算结点个数int length(List *list){int count =0;Node *PtrHead = list ->head;while(PtrHead){count++;PtrHead = PtrHead ->next;}}int main(){List list;list.head = NULL;//头指针PushHead(&list,1);tralve(&list);PushHead(&list,2);tralve(&list);PushHead(&list,3);tralve(&list);printf("length = %d\n",length(&list));return 0;}
阅读全文
0 0
- 单链表-乡巴老也能看懂
- 打开关闭读写文件-乡巴老也能看懂
- 看懂URL
- 看懂.lds
- 看懂Makefile
- 没看懂
- 看懂人心
- 看懂路由表
- 看懂信用卡对帐单
- 看懂复杂C++
- 谁能看懂这幅图?
- 如何看懂路由表
- 看懂计算机病毒播报
- 十分钟看懂中国经济
- 简单看懂Validator
- 如何看懂ping命令
- 看懂Gradle脚本
- 年轻人应该看懂
- 世界最年轻亿万富翁:从哈佛退学白手起家
- Android Studio 安装及设置
- SpringCloud服务注册中心比较:Consul vs Zookeeper vs Etcd vs Eureka
- 2-1-Initialization
- java计蒜客奇怪的国家试题
- 单链表-乡巴老也能看懂
- Android不能调用java.awt的原因及解决办法和思考
- 你不是没时间,你只是不去行动
- Linux命令基本格式及目录处理命令
- 2017 年 Linux 的五大痛点,运维你都造吗?
- Linux运维工程师入门的10大实用工具
- nginx 最基本配置用法
- Vim 新手节省时间的 10 多个小技巧
- Mysql中DATE_SUB 使用方法结合查询一天内,一周内,一月内的信息实例讲解