搜索
首页 电脑/网络 程序设计

单链表,线性链表,静态链表有什么区别?

全部回答

2007-11-20

0 0

  单链表就是线形链表,是线性表的一种链式存储结构,他的存储特点是: 每个节点由数据与域data和指针域next域组成,数据域用于存放数据元素;指针域用于存放该数据元素的直接后继节点的存储地址,这样,通过指针域可将所有节点连接起来,第一个节点的地址用指针变量head表示。
   静态链表,就是用一个二维数组存储线形,数组第1列用于存放数据元素本身,第2列存放该数据元素在线形表中的位序。

2007-11-20

666 0

    单链表 用一组地址任意的存储单元存放线性表中的数据元素。 以元素(数据元素的映象) + 指针(指示后继元素存储位置) = 结点 (表示数据元素 或 数据元素的映象) 以“结点的序列”表示线性表  称作线性链表(单链表) 单链表是一种顺序存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。
     因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和 i 可见,在链表中插入结点只需要修改指针。但同时,若要在第 i 个结点之前插入元素,修改的是第 i-1 个结点的指针。
   因此,在单链表中第 i 个结点之前进行插入的基本操作为: 找到线性表中第i-1个结点,然后修改其指向后继的指针。   线性链表 线性链表中的数据存放位置是随机分配的,有指针连接前后数据。
   静态链表 链表大家都知道吧,我就不废话了...所谓的静态链表就是在那些不能用指针的语言里用数组建立链表并用一个下标来维护...给个程序吧... program static_link_list(input,output); const maxl=10; type elem=record num,next:integer; end; tlist=array[0。
    。maxl]of elem; var list:tlist; num,place,head,av:integer; ch:char; function get_node(var av:integer):integer; begin get_node:=av; if av<>-1 then av:=list[av]。
    next; end; procedure disp_node(var av:integer;k:integer); begin list[k]。next:=av; av:=k; end; procedure init(var av:integer); var i:integer; begin for i:=0 to maxl-1 do xt:=i+1; list[maxl]。
    next:=-1; av:=0; end; procedure print(head:integer); begin head:=list[head]。
  next; while head<>-1 do begin write(list[head]。  num,' '); head:=list[head]。
  next; end; writeln; end; procedure insert(head,num,place:integer;var av:integer); var j,x:integer; begin j:=0; while (head<>-1)and(jplace-1) then begin writeln('Input Error!'); exit; end; x:=get_node(av); if x=-1 then begin writeln('List has been full!'); exit; end; list[x]。
    num:=num; list[x]。next:=list[j]。next; list[j]。next:=x; end; procedure del(var av:integer;head,place:integer); var j,k:integer; begin j:=0; while (list[head]。
    next<>-1)and(jplace-1) then begin writeln('Input Error!'); exit; end; k:=list[head]。
  next; list[head]。  next:=list[list[head]。next]。next; disp_node(av,k); end; begin init(av); head:=get_node(av); list[head]。
  next:=-1; readln(ch); while ch<>'E' do begin case ch of 'I':begin readln(num,place); insert(head,num,place,av); end; 'D':begin readln(place); del(av,head,place); end; 'P':print(head); else writeln('Input Error!'); end; readln(ch); end; end。
     。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
程序设计
电脑装机
操作系统/系统故障
硬件
笔记本电脑
百度
互联网
反病毒
软件
程序设计
程序设计
数据库
C/C++
VB
JAVA相关
C#/.NET
VC++
汇编语言
其他编程语言
举报
举报原因(必选):
取消确定举报