麻烦讲解一下C语言中的链表

麻烦讲解一下C语言中的链表,关于链表我实在我无法理解,麻烦高人仔细的详解一下,关于网上有的就不要发了,我基本上都看过了,尤其是为什么要在结构当中要定义一个指针,并且在外部还要定义三个指针,以及指针实在何时free的,指针当中储存了当前结构变量的地址,那么下个指针是不是就会被free掉。还有就是问一下,在多层结构中,链表该如何使用

链表的最基本组成和功能,以单链表为例
首先单链表最基本要有一个数据区和一个指向区如下
_____________________
| 数据区 | 指向区 |
————————————
每个这样的结构称之为一个节点。每个节点又指向区连接。
这样通过链表的第一个几点地址就可以找到整个链表的节点从而获取节点中的数据了。
上面说的是最基本的链表,也称之为裸链表
双向链表和单链表类似,就是多了一个指向区,指向当前节点的上一个节点,好处是,因为单链表只能顺序向下读取,而不能你想读取,双项链就可以任意方向读取数据了。

一般链表在应用时,会额外建立一个链表头。在链表头里会有一些方便对链表操作的东西。
比如你说的free指针,链表的第一节点地址,链表的尾地址,甚至一些控制变量如链表容量等

至于链表的具体应用很复杂,但其根本不会改变,并且链表的数据区可以是任何类型的数据,甚至可以是子链表。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-04
1.free不会自动调用,程序员必需主动写代码显式的调用才发生
2.外部不是必需要定义三个指针的,一个全局的或静态的首结点指针,是必需的,其它的只是使用方便想定义就定义啦,并不是必需的
3.结构体中至少得有一个指向本结构体类型的指针,这是串成链表的必要条件
单向链表中相邻的两结点在内存空间上常常并不相邻,它们通过这个指针关联起来,除尾结点外,每一个结点都通过本结点中的指针指向下一个结点(结点的内存地址)
双向链表中除首结点外,每个结点都有一个指向上一结点的指针,通过向前和向后的指针,可以方便的向前向后遍历整个链表.
4.啥是我层结构呀?子结点不止一个的? 先把简单的搞明白吧,弄通透了,复杂的也就可以看懂并能学会了追问

我看看有没有别人回答,要是没有就给你分~谢谢您啦啊!~

追答

嗯,你之所以无法理解,是因为你只看不练, 边看边练习写代码并上机调试,可加深理解

本回答被提问者采纳
第2个回答  2012-02-05

struct Node

{

int data;

Node * next

};

如果你用vs2010作为编译器的话,你会发现head->next 这个指向会看到另外一个数据区,很直观

第3个回答  2012-02-04
这么简单的问题有50分,肯定不止一个人回答的,不过我看LS的打那么多字,我就不回答了- -!
相似回答