在看《深入浅出MFC》时遇到的问题,为什么叫“链表”。(200分)

  • 主题发起人 主题发起人 Writer
  • 开始时间 开始时间
W

Writer

Unregistered / Unconfirmed
GUEST, unregistred user!
靠着DELPHI的基础,之后看了几眼的C++,之后就看《深入浅出MFC》了,
其中“链表”这样东西我却从未听过(我在DELPHI的书没有见过此词),谁来说一说?
 
嗯?没正规的学过一本编程语言和《数据结构》??????
 
delphi的书恐怕不会讲这么基础的东西,看看pascal的书吧。
我记得以前上课讲数据结构都是用类似pascal语言的语法讲的,现在可能用C了吧
 
。。。。链表嘛!
它与树,图同为数据结构,一样在内存中表现为特殊的形式!
与树,图不同的是它是线性表,每个结点都有指针域指向它的
后继结点。
 
找本 数据结构 的书看看啦
程序员不学 数据结构 是不行的
 
http://www.playicq.com/dispdoc.php?t=&id=1668
注册个用户,到这页下载后看一看就知道了
 
是指针链表吧?!
首先:链表是一种数据结构(表record,它不是就叫表吗);
其次:这种结构中含有指针;
最后:链表可以在程序运行中动态建立;
链表是由“节点”元素组成的,每个节点都由两部分构成:
(1)数据部分:存放要处理的数据;
(2)指针部分:存放下一个节点的地址,链表就是通过它建立联系的!
下面是个简单的链表例子:
Pstruct=^Tstruct;
type
Tstruct=packed record//定义一个数据结构
data:integer;//数据部分;
next:Pstruct;//指针部分,指向定义的数据类型,就是这个结构自己。
end;
下面我们在建立三个数据a1,a2,a3;
var a1,a2,a3:Tstruct;
建立数据间的联系:
a1.next:=@a2;//数据a1的指针成员next就指向数据a2了,状态如下图(图中是3个数据):
数据a1 数据a2 数据3
|---------------| |---------------| |---------------|
| data | |------->| data | |------->| data |
|---------------| | |---------------| | |---------------|
| next |--------| | next |-------| | next |
|---------------| |---------------| |---------------|
如何建立a2与a3的联系呢?简单
a2.next:=@a3;
或者:
a1.next^.next:=@a3;
再多呢?还是差不多:
a1.next^.next^....next:=@an;
将数据88存到a3的data中,可以用下面任何一种方法:
(1) a3.data:=88;
(2) a2.next^.data:=88;
(3) a1.next^.next^.data:=88;
看它们的连接方式是不是很像一条链子?名字大概就是这样来的吧?!!
链表的结尾标志:
因为没有可以指向的下一个节点了,所以赋值nil给它(如上例):
a3.next:=nil;或
a1.next^.next^.next:=nil;
好了,画图表太难了,累死了,详细的情况你再回去看看书,品味品味吧
 
呵呵,辛苦晶晶了。不过基本上,现在除了在教学的时候会用到链表。。。。 -。-
 
>>现在除了在教学的时候会用到链表
谁说的?链表太常用了,我几乎每个程序都会用到。只不过因为用的是delphi,一般
我用TList控件代替了。
 
对于数据量大时,数据结构还是好好学学!
 
我是学C的出身呀,关于链表,我可以说他是对结构的串联,正如楼上的兄弟所说是一种数据结构呀。
struct TEST{
char test_array[2];
........//一系列定义,可以是int,char,long,double....
struct TEST *next;
}
以上是单链表,next指针用来指向下一个同样的结构。整个链表如下图
|---head---| //指向第一个结构的指针
|---next---| //第一个结构里指向第二个结构的指针
........
|---next=NULL---| //最后的指针,由于没有下一个元素,所以指向NULL
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
struct TEST{
char test_array[2];
........//一系列定义,可以是int,char,long,double....
struct TEST *prev;
struct TEST *next;
}
双链表只是多定义一个结构指针使其指向当前元素的上一个元素,头元素由于
没有直接前驱,所以他的prev指向NULL。
 
看看关于《数据结构》方面的书吧
 
呵呵,上了高中,在学校的图书馆借了一本88年出的《数据结构》潘道才编的,是大专
的教材,一看就明白了。以上分分是按谁回答得认真、详细、先答给的。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部