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

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

编写算法,借助栈将一个带都节点的单链表逆置。


参考答案和解析
void invert(linklist *L){ linklist *p=L->next,*s;// p为工作指针,指向当前元素,s为p的后继指针 L->next=null;//头结点摘下,指针域置空。算法中头指针L始终不变 while (p!=NULL) {s=p->next; // 保留后继结点的指针 p->next=L->next; // 逆置 L->next=p; p=s; // 将p指向下个待逆置结点 }}
更多 “编写算法,借助栈将一个带都节点的单链表逆置。” 相关考题
考题 ● 栈是一种按“后进先出”原则进行插入和删除操作的数据结构,因此, (9) 必须用栈。(9)A. 函数或过程进行递归调用及返回处理B. 将一个元素序列进行逆置C. 链表结点的申请和释放D. 可执行程序的装入和卸载

考题 ● 栈是一种按“后进先出”原则进行插入和删除操作的数据结构,因此, (60) 必须用栈。(60)A. 实现函数或过程的递归调用及返回处理时B. 将一个元素序列进行逆置C. 链表结点的申请和释放D. 可执行程序的装入和卸载

考题 下列关于链表结构的叙述正确的是( )A.线性链表、带链的栈和带链的队列的结点的结构都是相同的B.双向链表也就是循环链表C.线性链表与带链的栈的结点的结构是不同的D.在循环链表中通过任意一个结点可以找到链表中其他所有的结点,而在双向链表中做不到这一点

考题 有n个节点的单链表中,算法的时间复杂度是O(1)的操作是() A、访问第i个节点(1≤i≤n)B、在第i个节点后插入一个新节点(1≤i≤n)C、访问值为x的节点D、将n个节点从小到大排序

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

考题 若某链表最常用的操作是在最后一个节点之后插入一个节点和删除最后一个节点,则采用______存储方式最节省时间。A.单链表B.双链表C.单循环链表D.带头节点的双循环链表

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

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

考题 阅读下列说明和C程序,将应填入(n)处的字句写在对应栏中。[说明]借助一个栈结构,可实现二叉树的非递归遍历算法。InOrderTraverse数实现中序非递归遍历,遍历过程如下:若不是空树,根节点入栈,进入左子树;若已经是空树,则栈顶元素出栈,访问该元素(根节点),进入该节点的右子树,继续直到遍历完成。函数中使用的预定义符号如下:typedef struct BiTNode{int data;struct BiTNode *iChiid,*rChiid;} BiTNode,*BiTree;typedef struct SNode{/*链栈的节点类型*/BiTree elem;struct SNode *next;}SNode;[函数]int InOrderTraverse(BiTree root){BiTree P;SNode *q,*stop=NULL;/*不带头节点的单链表作为栈的存储结构*/P=root;while(p !=NULL || stop !=NULL){if( (1) ){ /*不是空树*/q=(SNode*)malloc(sizeof q);if(q==NULL)return-1;/*根节点指针入栈*/(2);q->elem=P;stop=q;P=(3); /*进入根的左子树*/}else{q=stop;(4); /*栈顶元素出栈*/printf("%d|,q->elem->data); /*防问根节点*/P=(5); /*进入根的右子树*/free(q); /*释放原栈顶元素*/}/*if*/}/*while*/return 0;}/*InOrderTraverse*/(1)

考题 栈是一种按“后进先出”原则进行插入和删除操作的数据结构,因此, (9) 必须用栈。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个节点,现要求插入一个新节点后使得单链表仍然保持有序,则该操作的时间复杂度为()。

考题 栈的特点是后进先出,若用单链表作为栈的存储结构,并用头指针作为栈顶指针,则( )。A.入栈和出栈操作都不需要遍历链表 B.入栈和出栈操作都需要遍历链表 C.入栈操作需要遍历链表而出栈操作不需要 D.入栈操作不需要遍历链表而出栈操作需要

考题 若要将一个单链表中的元素倒置,可以借助()建立单链表的思想将链表中的结点重新放置。

考题 八皇后问题是一种递归问题,经常借助()来完成算法。A、顺序表B、栈C、链表D、树

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

考题 编写程序,将若干整数从键盘输入,以单链表形式存储起来,然后计算单链表中结点的个数(其中指针P指向该链表的第一个结点)。

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

考题 数据结构里,在递归程序中,经常借助选项中的哪种来完成算法()。A、图B、栈C、链表D、树

考题 将递归算法转换成对应的非递归算法时,通常需要使用()来保存中间结果。A、队列B、栈C、链表D、树

考题 单选题八皇后问题是一种递归问题,经常借助()来完成算法。A 顺序表B 栈C 链表D 树

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

考题 填空题若要将一个单链表中的元素倒置,可以借助()建立单链表的思想将链表中的结点重新放置。

考题 单选题数据结构里,在递归程序中,经常借助选项中的哪种来完成算法()。A 图B 栈C 链表D 树

考题 问答题编写程序,将若干整数从键盘输入,以单链表形式存储起来,然后计算单链表中结点的个数(其中指针P指向该链表的第一个结点)。

考题 填空题已知Q是一个非空队列,S是一个空栈。编写算法,仅用队列和栈的ADT函数和少量工作变量,将队列Q的所有元素逆置。栈的ADT函数有:voidmakeEmpty(SqStacks);置空栈voidpush(SqStacks,ElemTypee);元素e入栈ElemTypepop(SqStacks);出栈,返回栈顶元素intisEmpty(SqStacks);判断栈空队列的ADT函数有:voidenQueue(Queueq,ElemTypee);元素e入队ElemTypedeQueue(Queueq);出队,返回队头元素intisEmpty(Queueq);判断队空

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