单链表,线性链表,静态链表有什么区别?
单链表
用一组地址任意的存储单元存放线性表中的数据元素。
以元素(数据元素的映象)
+ 指针(指示后继元素存储位置)
= 结点
(表示数据元素 或 数据元素的映象)
以“结点的序列”表示线性表
称作线性链表(单链表)
单链表是一种顺序存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。
因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和 i
可见,在链表中插入结点只需要修改指针。但同时,若要在第 i 个结点之前插入元素,修改的是第 i-1 个结点的指针。
因此,在单链表中第 i 个结点之前进行插入的基本操作为:...全部
单链表
用一组地址任意的存储单元存放线性表中的数据元素。
以元素(数据元素的映象)
+ 指针(指示后继元素存储位置)
= 结点
(表示数据元素 或 数据元素的映象)
以“结点的序列”表示线性表
称作线性链表(单链表)
单链表是一种顺序存取的结构,为找第 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。
。收起