线性表学习笔记之链表
2013-11-12 15:01
197 查看
原创博文,转载请注明出处
链表分类:单链表,插入删除和查找的时间复杂度均为O(n)双链表,插入、删除和查找的时间复杂度为O(1)
循环链表,表中最后一个节点的指针不是NULL,而改为指向头结点,从而整个链表形成一个环。
静态链表,借助数组来描述线性表的链式存储结构,这儿的指针是结点的相对地址。和顺序表一样需要预先分配一块连续的内存空间。以next==0作为其结束的标志。
综合应用:
1.设计一个递归算法,删除不带头节点的单链表L中所有值为x的节点。
思路:可以设计一个函数f(L,x)删除以L为首结点指针的单链表中所有值为x的结点,那么f(L->next,x)则是删除以L->next为首结点指针的单链表中所有值等于x的结点。
借助一个递归工作栈,深度为O(n),时间复杂度为O(n)
DLinkList Locate(DLinkList &L, ElemType x){ DNode *p=L->next, *q; while(p&&p->data!=x) p=p->next; if(!p){ printf("不存在值为x的结点\n"); exit(0) } else{ p->freq++; p->next->pred=p->pred; p->pred->next=p->next; q=p->pred; while(q->freq<p->freq&&q!=L) q=q->pred; p->next=q->next; q->next->pred=p; q->next=p; p->pred=q; } return p; //返回值为x的结点的指针 }
View Code
欢迎查看关于顺序表的学习,见上篇/article/7003150.html
相关文章推荐
- 数据结构 学习笔记之:线性表——顺序表、静态链表、动态链表(单链表、双链表、单循环链表、双循环链表,链式栈、链式队列)——基础概念大扫盲!
- 数据结构学习笔记 --- 线性表 (双向链表、循环链表)
- 数据结构学习笔记(3.线性表之静态链表及柔性数组)
- 数据结构学习笔记1-线性表(顺序表,单链表)
- 数据结构学习笔记之线性结构--离散存储[链表]
- 数据结构学习笔记 --- 线性表 (双向链表、循环链表)
- 数据结构学习笔记 --- 线性表 (单链表)
- 数据结构学习笔记--线性结构(链表)
- 【C++数据结构学习笔记---线性表】带头结点的双向循环链表
- 数据结构学习笔记 --- 线性表 (单链表)
- 数据结构 学习笔记(二):线性结构:线性表(顺序表,链表,广义表,多重链表)
- 数据结构学习笔记 --- 线性表 (双向链表、循环链表)
- 数据结构学习笔记 --- 线性表 (一些常见的关于链表的算法和面试题)
- 数据结构学习笔记 --- 线性表 (一些常见的关于链表的算法和面试题)
- 【数据结构与算法学习笔记】PART3 线性结构(除向量外,数组、栈、队列、链表)
- 线性代数学习笔记(五)
- 数据结构学习笔记(二) 链表之链栈基本操作
- 单链表学习笔记一 学生信息动态链表
- (学习笔记 5)静态链表
- 数据结构学习之线性表的单链表存储(1)