网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

3、试写一算法,对单链表实现就地逆置。


参考答案和解析
答:将原连表中的头节点和第一个元素结点断开,先构成一个新的空表,然后将原链表中各节点,从第一个结点起插入这个新表的头部。//链表的就地逆置;为简化算法,假设表长大于 2void LinkList  reverse(Linklist &L)//定义q为p的后继,s为q的后继\mathrm{p}=\mathrm{L}\to \mathrm{n}\mathrm{e}\mathrm{x}\mathrm{t};\mathrm{q}={\mathrm{p}}^{-}\mathrm{m}\mathrm{e}\mathrm{x}\mathrm{t}\mathrm{s}\mathrm{s}\mathrm{q}\mathrm{q}.\mathrm{n}\mathrm{e}\mathrm{x}\mathrm{t}\mathrm{p}\mathrm{p}\space \mathrm{p}\mathrm{e}\mathrm{x}\mathrm{t}=\mathrm{N}\mathrm{U}\mathrm{L}\mathrm{L};while(\space \mathrm{s}\to \space \mathrm{e}\mathrm{e}\mathrm{x}\mathrm{t}){{\mathrm{q}}^{-}\mathrm{n}\mathrm{e}\mathrm{x}\mathrm{t}=\mathrm{p};\mathrm{p}=\mathrm{q};q=ss=->next;∥把L的元素逐个插入新表表头}q>next=p: s->nextaq: L->next=s;JninkList_reverse
更多 “3、试写一算法,对单链表实现就地逆置。” 相关考题
考题 判断单链表有没有环的算法中,至少需要几个指针()A.1B.2C.3D.4

考题 在单链表中,增加头结点的目的是( )。A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现

考题 递归算法一般需要利用______实现。A.队列B.循环链表C.栈D.双向链表

考题 已知f为单链表的表头指针, 链表中存储的都是整型数据,试写出实现下列运算的递归算法: ① 求链表中的最大整数; ② 求链表的结点个数; ③ 求所有整数的平均值。

考题 设计一个算法,通过一趟遍历在单链表中确定值最大的结点。

考题 完善算法:已知单链表结点类型为:函数create建立以head为头指针的单链表。

考题 试写一算法,实现单链表的就地逆置(要求在原链表上进行)

考题 线性表用链式结构来实现,可有哪些形式() A、单链表B、双链表C、循环链表D、双向循环链表

考题 设计算法,实现单链表的就地逆置,即利用原表的存储空间将线性表(a1,a2,„,an)逆置为(an,an-1,„,a1)。

考题 在单链表中,增加头结点的目的是( )。A.方便运算的实现B.使单链表至少有一个元素C.标识表结点中首结点的位置D.说明单链表是线性表链式存储的实现形式

考题 在单链表中,增加头节点的目的是( )。A. 使单链表不为空B. 方便运算的实现C. 增加存储空间D. 说明单链表是线性表的链式存储实现

考题 函数实现单链表的删除算法,请在空格处将算法补充完整。

考题 在单链表中,增加头结点的目的是( )。A.方便运算的实现B.使单链表至少有一个结点 在单链表中,增加头结点的目的是( )。A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性的链式存储实现

考题 在单链表中,增加头结点的目的是( )。 A.方便运算的实现B.使单链表至少有一个结点SXB 在单链表中,增加头结点的目的是( )。A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现

考题 在单链表中,增加头结点的目的是( )。A.A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性的链式存储实现

考题 阅读以下说明和C函数,填补代码中的空缺,将解答填入答题纸的对应栏内。 [说明] 函数ReverseList(LinkList headptr)的功能是将含有头结点的单链表就地逆置。处理思路是将链表中的指针逆转,即将原链表看成由两部分组成:已经完成逆置的部分和未完成逆置的部分,令s指向未逆置部分的第一个结点,并将该结点插入已完成部分的表头(头结点之后),直到全部结点的指针域都修改完成为止。 例如,某单链表如图1所示,逆置过程中指针s的变化情况如图2所示。 链表结点类型定义如下: typedef struct Node{ int data; Struct Node *next; }Node,*LinkList; [C函数] void ReverseList(LinkList headptr) { //含头结点的单链表就地逆置,headptr为头指针 LinkList p,s; if(______) return; //空链表(仅有头结点)时无需处理 P=______; //令P指向第一个元素结点 if(!P->next) return; //链表中仅有一个元素结点时无需处理 s=p->next; //s指向第二个元素结点 ______ =NULL; //设置第一个元素结点的指针域为空 while(s){ p=s; //令p指向未处理链表的第一个结点 s= ______; p->next=headptr->next; //将p所指结点插入已完成部分的表头 headptr->next= ______; } }

考题 在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度都是O(n)。A.遍历链表和求链表的第i个结点 B.在地址为P的结点之后插入一个结点 C.删除开始结点 D.删除地址为P的结点的后继结点

考题 已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。

考题 编写算法,实现带头结点单链表的逆置算法。

考题 单链表中,增加一个头结点的目的是为了()。A、使单链表至少有一个结点B、标识表结点中首结点的位置C、方面运算的实现D、说明单链表是线性表的链式存储

考题 编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度。

考题 在单链表中,头指针的作用是()A、方便运算的实现B、用于标识单链表C、使单链表中至少有一个结点D、用于标识首结点位置

考题 判断题单链表可以实现随机存取。A 对B 错

考题 问答题已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。

考题 问答题编写算法,实现带头结点单链表的逆置算法。

考题 问答题设某带头结头的单链表的结点结构说明如下:typedef struct nodel{int data struct nodel*next;}node;试设计一个算法:void copy(node*headl,node*head2),将以head1为头指针的单链表复制到一个不带有头结点且以head2为头指针的单链表中。

考题 单选题在单链表中,头结点的作用是()A 方便运算的实现B 用于标识单链表C 使单链表中至少有一个结点D 用于标识首结点位置

考题 问答题编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度。