链表的改进及其应用
来源:互联网 发布:资源分配算法 编辑:程序博客网 时间:2024/05/17 00:15
对于一非空的循环单链表,h
和p
分别指向链表的头、尾结点,则有:(2分)
在双向循环链表结点p
之后插入s
的语句是: (3分)
在双向链表存储结构中,删除p
所指的结点,相应语句为:(3分)
某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间? (2分)
若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用哪种存储方式最节省运算时间? (2分)
将线性表La和Lb头尾连接,要求时间复杂度为O(1),且占用辅助空间尽量小。应该使用哪种结构? (2分) A
(neuDS)在链表中若经常要删除表中最后一个结点或在最后一个结点之后插入一个新结点,则宜采用()存储方式。 (2分)
非空的循环单链表head的尾结点(由p所指向)满足()。 (2分)
在循环双链表的p所指结点之前插入s所指结点的操作是()。 (2分)
若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用()存储方式最节省运算时间。 (2分)
某线性表最常用的操作是在最后一个结点之后插入一个结点或删除第一个结点,故采用()存储方式最节省运算时间。 (2分)
在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行()操作与链表的长度有关。 (2分)
如果对线性表的运算只有4种,即删除第一个元素,删除最后一个元素,在第一个元素前面插入新元素,在最后一个元素的后面插入新元素,则最好使用()。 (2分)
如果对线性表的运算只有2种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用()。 (2分)
在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是()。 (2分)
带表头附加结点的双向循环链表为空的判断条件是头指针L满足条件()。 (2分)
循环链表的主要优点是()。 (2分)
已知指针ha和hb分别是两个单链表的头指针,下列算法将这两个链表首尾相连在一起,并形成一个循环链表(即ha的最后一个结点链接hb的第一个结点,hb的最后一个结点指向ha),返回该循环链表的头指针。请将该算法补充完整。 (4分)
typedef struct node{ElemType data; struct node *next;}LNode;LNode *merge(LNode *ha, LNode *hb) {LNode *p=ha; if (ha==NULL || hb==NULL) {cout<<”one or two link lists are empty!”<<endl; return NULL; } while ( p->next!=NULL ) p=p->next; p->next=hb; while ( p->next!=NULL ) p=p->next; __________ }
设有一个双向循环链表,每个结点中除有left、data和right三个域外,还增设了一个访问频度域freq,freq 的初值为零。每当链表进行一次查找操作后,被访问结点的频度域值便增1,同时调整链表中结点的次序,使链表按结点频度值非递增有序的次序排列。下列算法是符合上述要求的查找算法,请将该算法补充完整。(4分)
typedef struct Node{ElemType data; struct Node *left; struct Node *right; intfreq; } DNode;DNode *locate_DList(DNode *&L, ElemType x){ //在表L中查找元素x,查找成功则调整结点频度域值及结点位置,并返回结点地址;//查找不成功则返回NULLDNode *p=L, *q; if (L==NULL) return NULL; while (p->data!=x && p->right!=L) p=p->right; if (p->data!=x) return NULL; p->freq++; q=p->left; while (q!=L && q->freq<=p->freq) q=q->left; //查找插入位置 if (q==L && q->freq<=p->freq) { //需将p结点插在头结点L前//将p结点先从链表中摘下来p->left->right=p->right; p->right->left=p->left; //将p结点插在L结点前 p->right=L; p->left=L->left; L->left->right=p; L->left=p; L=p; } else if (q!=p->left ) { //若q不是p的前驱,则需调整结点位置,将p结点插在q结点后//将p结点先从链表中摘下来 p->left->right=p->right; p->right->left=p->left; ______________ //将p结点插在q结点后 } return p;}
与单链表相比,双链表的优点之一是()。 (2分)
采用多项式的非零项链式存储表示法,如果两个多项式的非零项分别为N1和N2个,最高项指数分别为M1和M2,则实现两个多项式相乘的时间复杂度是:(2分)
- 链表的改进及其应用
- 朴素贝叶斯改进及其应用
- 转载:改进的双向启发式搜索算法及其在车载导航仪中的应用
- jQuery.TreeView的使用介绍及其改进
- KNN及其改进算法的python实现
- 冒泡法及其改进的java实现
- 梯度下降及其改进算法的比较
- 静态链表的基本操作及其应用(实验2.3)
- 静态链表的基本操作及其应用(实验2.3)
- 链队列的C++实现及其应用
- SQL Server的系统表及其应用
- 广义表的算法库及其应用
- 线性表的基本操作及其应用
- 线性表的基本操作及其应用
- [容易] 递归的应用:改进的汉诺塔
- 软件经济学及其改进
- 双边滤波器及其改进
- 外观模式及其改进
- WPF 关于控件背景色的设置和穿透效果
- 【代码练习4】利用多线程处理和尚吃馒头问题
- 每天一个linux命令(52):ifconfig命令
- leetcode 1 Two Sum
- 摄影之会议摄影心得
- 链表的改进及其应用
- CAS自旋原理
- 六度分离
- 唯快不破:TCP/IP详解--发送ACK和RST的场景
- 关于二叉搜索树功能的Java实现
- 从传统方法到深度学习,人脸关键点检测方法综述
- Glide用法
- [BZOJ3653]谈笑风生(dfs序+主席树)
- 每天一个linux命令(53):route命令