再窥--单链表和顺序存储

先接一下上次的笔记,实现对单链表进行删除

思路实现

  1. 声明结点p和q
  2. 首节点赋值给p,下一个结点赋值给q
  3. 循环执行释放p,将q赋值给p的操作(删除第一个结点后,之后的结点就是首节点了,以此类推)
string ClearList(Node *L){
	Node *p,*q;
	p = L->next;//指向首节点 
	while(p){
		q = p->next;//q承接下一个节点
		delete p;//删除 上一个 节点
		p = q; 
	}
	L->next = NULL;//成为了空表
	return "Clear"; 
}

问题

delete p;p = p->next;不可以代替循环体吗?

注意delete(p) 释放了数据域和指针域,所以无法记录下一节点了。

应用

  1. 小网站的用户信息。除了注册外,基本是读取。所以顺序存储好一些。
  2. 像一些插入/删除操作多的,比如游戏装备,那么肯定是单链表好些
  3. 需要更高的需求和性能的平衡,还是需要其他复杂的数据结构
posted @ 2017-06-06 14:45  AsuraDong  阅读(181)  评论(0编辑  收藏  举报