链式存储结构的特点

来源:互联网 发布:php扩展加密 编辑:程序博客网 时间:2024/06/10 14:00

链式存储结构的特点

1.优点

1.存储空间动态分配,可以根据实际需要使用

2.不需要地址连续的存储空间

3.插入/删除操作只须通过修改指针实现,不必移动数据元素,操作时间效率高(无论位于链表何处无论链表长度如何,插入和删除操作的时间都是O(1)

2.缺点

1.每个链结点需要设置指针域(存储密度小)

2.是一种非随机存储结构,查找、定位等操作要通过顺序扫描链表实现,时间效率低O(n)


例题:

请写一个算法,该算法尽可能高的时间效率找到由list所指的线性链表的倒数第k个结点。若找到这样的结点,算法给出该结点的地址,否则给出NULL 

限制:1.算法中不得求出链表长度,也不允许对链表进行逆转

2.不允许使用除指针变量和控制变量以外的其他辅助空间



1.设置一个指针变量p,初始时指向链表的第一个结点

2.然后令p后移指向链表的第k个结点    执行k-1

3.再设置另一个指针变量q,初始时指向链表的第一个结点

4.利用一个循环让p q同步沿链表向后移动;当p指向链表最后那个结点时,q指向链表的倒数第k个结点 执行n-k


LinkList SEARCHNODE(LinkList list, int k) 

{

LinkList p,q;

int i;

if (list != NULL && k > 0) {

p = p ->link;

if(p == NULL) {

printf(“链表中不存在倒数第k个结点”)

return NULL;

}

}

q = list;

while(p -> link != NULL) {

p = p ->link;

q = q ->link;

}

return q; 

}