-
-
[旧帖]
[原创]线性表
0.00雪花
-
发表于:
2009-6-13 18:40
2903
-
线性表是最基本的数据结构。对于高手会不以为然,但是由于全国高校的那惊人的教育质量。
大多数学c语言的学生连单链表都搞得半生不熟。
线性表只有两种基本形式。顺序和链式。
对于顺序表没多少可以讲的。一般用个数组就了事。
上过哪C语言的人该对数组很了解吧。于是我就pass了
对于顺序结构有个严重问题就是在删除和擦人时要大量移动。链表就没这问题了。
struct lnode{
ElemType data;
struct lnode *next;
}lnode,*linklist;
就是一个最基本的单链表。
getelem(linklist l,int i,ElemType &e){
p=l->next;j=1;
while(p&&j<i){
p=p->next;++j;
}
if(!p||j>1)return ERROR;
e=p->data;
return OK;
}
从这里你还没有看到链表的优越性。但是在插入和删除中就不必频繁移动了。
在a和b中插入c不难。只要让a的指针指向c,c指向b即可。而删除就更方便了。在要删除的前一项的指针指到他的后一项就行了
1 s->next=p-next;p->next=s;
2 p-next=p->next->next;
一般在实现算法时要用到一个头指针。
insert(linklist &L,int i,ElemType e0{
p=l;j=0;
While(P&&J<i-1){p=p->next;++j;}
if(!p||j>i-1)return ERROR;
s=(linklist)malloc(sizeof(lnode));
s->data=e;s->next=p-next:
p->next=s;
return ok;
}
未完
[课程]FART 脱壳王!加量不加价!FART作者讲授!