【C解析之九】链表初探
2014-03-22 19:29
246 查看
C解析之九链表初探
前言:链表可以更好的适应实时变化的存储需求,具有无限的扩展性,然而你并不需要担心是否有足够连续的内存。1.链表的优势:
连续内存约束:数组的内存必须是连续的,当存储数据量达到一定程度,开辟数组空间可能面临一个严重的问题-内存中找不到足够大的连续内存。链表不需要连续的内存,它可以将零散的内存串起来,不断的延伸表的长度。
插入与删除:数组的插入与删除需要移动大量的数据,并且在时间的消耗上具有不定性,在数据实时变化的情况下,数组的效率非常低下。链表的删除与插入只需操作几个指针,具有固定的时间消耗,相当高的效率。
更好的适用性:即使是动态开辟的数组,如果遇到更大的存储需求,就必须重新开辟更大的数组并复制数据。链表在几乎可以满足任何大小,不断变化的存储需求。
2.链表的构成:
链表由节点,相互链接形成。那么组成链表的结点应该具有哪些特点,首先链表是用来存储数据的,所以结点必须有数据存储区,再者链表需要相互链接,那么显然还有一个指针存储区。
数据存储区:存储数据信息。
指针存储区:存储一个指针,用于指向下一个节点。
不难理解,节点的指针指向下一个节点,下一个又指向下一个...便形成了一个链。显然,链表的节点需要定义成一个结构体,包含数据的部分与指针部分。
3.链表的建立:
第一步:定义节点。
第二不:添加节点形成链表。
下面是链表建立的示例:
#include #include //************ //定义链表节点 //************ struct Node{ int id; //id为学号,Score为成绩 int Score; //id,Score为数据区 struct Node * next; //指针next,指向下一个节点,故类型为Node * }; //************ //定义链表头 //************ Node *Head; int main(){ Node *temp; Node *p1; Head=(Node *)malloc(sizeof(Node)); if(Head!=NULL){ //检查是否申请空间成功 Head->next=NULL; //只有头节点,故此时指向空NULL //id,Score均不赋值,一般头节点不用于存储数据 } printf("现在创建含4带个节点的链表:\n"); for(int i=0;inext=NULL; printf("请输入id与Score:\n"); scanf("%d %d",&temp->id,&temp->Score); } //************ //将节点添加到链表末尾 //************ p1=Head; while(p1->next!=NULL) { p1=p1->next; //找到链表的末尾 } p1->next=temp; //将节添加到链表的末尾 } printf("现在输出链表中的4个节点:\n"); //************ //输出链表 //************ p1=Head->next; while(p1!=NULL){ printf("id为%d,成绩为%d\n",p1->id,p1->Score); p1=p1->next; } return 0; }
读者对上面的示例代码中
//*************************** //***********
//将节点添加到链表末尾 与 //输出链表
//*************************** //***********
这两段代码中的while控制条件,指针相关操作等细节可能不是很明白,难以形成直观的理解。没关系,我们这节先关注链表的整体结构,形成对链表的初步理解,在下一篇文章中,将给你形象直观的解析。
相关文章推荐
- [C/C++]反转链表
- c语言中malloc、realloc与calloc 的区别以及联系
- eWebEditor_v280_Free_Final最好用的网页编辑器下载
- Linux内核链表实现过程
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- new和malloc的区别深入解析
- 深入分析Linux下如何对C语言进行编程
- JSP FusionCharts Free显示图表 具体实现
- STL list链表的用法详细解析
- C语言编程时常犯十八个错误小结
- 编码实现从无序链表中移除重复项(C和JAVA实例)
- 结构之美:单链表的初始化、创建与遍历
- 结构之美:单链表的头结点与头指针
- 带头结点与不带头结点的单链表初始化
- 带头结点的单链表的12个基本操作
- 单链表的基础知识问与答
- 结构之美:使用头插法创建单链表
- 结构之美:单链表的销毁删除
- 怎样才算是掌握单链表呢?