c语言中链表的概念和简单的实现
来源:互联网 发布:虚拟变量数据案例 编辑:程序博客网 时间:2024/05/16 07:48
链表
链表概述
链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。
单向链表
单向链表的每个结点中除信息域以外还有一个指针域,用来指出其后续结点,单向链表的最后一个结点的指针域为空(NULL)。单向链表由头指针唯一确定,因此单向链表可以用头指针的名字来命名,例如头指针名为head的单向链表称为表head,头指针指向单向链表的第一个结点。
简单实现为:
#define NULL 0
typedef int DATATYPE
typedef struct node
{DATATYPE info;
node *next;
}LINKLIST;
双向链表
每个结点中只包括一个指向下个结点的指针域,这种链表称为单向链表。如果要在单向链表一个指针所指的当前位置插入一个新结点,就必须从链表头指针开始逐个遍历直到当前指针所指结点的前一结点,修改这个结点的指针。双向链表的每个结点中包括两个指针域,分别指向该结点的前一个结点和后一个结点。在双向链表中由任何一个结点都很容易找到其前面的结点和后面的结点,而不需要在上述的插入(及删除)操作中由头结点开始寻找。
简单实现为:
typedef struct node
{ DATATYPE info;
node *priv, *next;
}DINKLIST;
循环链表
单向链表的最后一个结点的指针域为空(NULL)。如果将这个指针里利用起来,以指向单向链表的第一个结点,就组成一个单向循环链表。
- c语言中链表的概念和简单的实现
- TrackBack 的简单概念和实现架构
- C语言实现串,和简单的主函数测试
- C语言:C语言指针的概念
- 一个简单的HashMap C语言实现
- c语言实现的简单二叉树
- 一个简单的HashMap C语言实现
- C语言,简单栈的实现 Stack
- BloomFilter的一个简单实现(C语言)
- C语言实现一个简单的计算器
- 泛型栈-C语言的简单实现
- C语言的HashTable简单实现
- 简单的C语言实现程序
- HashTable的简单实现(C语言)
- C语言实现的简单通讯录例子
- C语言简单的进度条实现
- C语言的HashTable简单实现
- C语言的HashTable简单实现
- db2 迁移数据库数据 、导出导入 、 备份
- Metasploit Support
- Linux的openvpn
- 云技术含量的问题
- 几种建站整合包
- c语言中链表的概念和简单的实现
- MySQL 备份和恢复2
- [转载]如何成为一名黑客
- jQuery 读书笔记之一
- gcc编译错误提示原因与分析(不断整理更新)
- AC97之DMA(s3c6410)
- MySQL存储过程之事务管理
- servlet与Struts action线程安全问题分析
- vmware下redhat安装vmware-tools实现share folder