L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置,如原单链表元素依次为1,2,3,4,则逆置后为4,3,2,1。 函数接口定义: 1 voidListReverse_L(LinkList &L); 其中L是一个带头结点的单链表。 裁判测试程序样例 1 2 3 4 5 6 7 8 9 10 1...
//带头结点的单链表就地逆置,很多同学将头结点也移动到了最后//单链表存储结构定义typedefintElemType;//假设元素类型为int,具体应用中需要改写typedefstructLNode{ElemTypedata;structLNode*next;}LNode,*LinkList;StatusListInverse_L(LinkList&L){LNode*p,*q;p=L->next;L->next=NULL;while(p!=NULL){q=...
对不带头结点的单链表进行就地逆置。该算法用L返回逆置后的链表的头指针。 void reverse(linklist&L) { p=null;q=L; while(q!=null) { ___;∥暂存后继 q->next=p; p=q; ___;∥待逆置结点 } ___;∥头指针仍为L }相关知识点: 试题来源...
1、已知有一个单链表(带头结点),其头指针为head,请编写一个函数计算单链表中结点的个数,并分析你的算法的时间复杂度。 2、请编写一个算法,对单链表(带头结点)实现就地逆置(设头指针为head)。 3、二叉树采用链式存储结构,试设计一个算法计算一棵给定二叉树的深度。©...
2.7试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1, a2..., an)逆置为(an, an-1,..., a1)。 (1)以一维数组作存储结构,设线性表存于a(1:arrsize)的前elenum个分量中。 (2)以单链表作存储结构。 [方法1]:在原头结点后重新头插一遍 ...
1、实现单链表的就地逆置。 2、建立两个非递减有序单链表,然后合并成一个非递减链表。 3、建立两个非递减有序单链表,然后合并成一个非递增链表。 4、编写一个主函数,调试上述算法。 四、选做题、思考题 1、如何用带表头结点的单链表作为多项式的存储表示,实现两个多项式的相加。 2、约毖夫环的实现。 3、如...
设计一个算法,将一个带头结点的单链表就地逆置。 答案与解析。 选择题。 1. 答案:D。 解析:链式存储的线性表,其结点的地址可以是连续的,也可以是不连续的,通过指针来连接各个结点。 2. 答案:C。 解析:栈是先进后出,队列是先进先出,它们都只允许在端点处进行插入和删除元素。 填空题。 1. 答案:顺序,相同...
三、实验内容 1、实现单链表的就地逆置。 2、建立两个非递减有序单链表,然后合并成一个非递减链表。 3、建立两个非递减有序单链表,然后合并成一个非递增链表。 4、编写一个主函数,调试上述算法。 四、选做题、思考题 1、如何用带表头结点的单链表作为多项式的存储表示,实现两个多项式的相加。
解题思路:首先查找插入的位置然后进行插入操作;从第一个结点开始找到第一个大于该新结点值的结点即为插入位置;然后在找到的此结点之前插入新结点;注意保留插入位置之前结点的指针才能完成插入操作。 (3)编写实现带头结点单链表就地逆置的子函数,并编写主函数测试结果。
L是给定单链表,函数Length要返回链式表的长度。裁判测试程序样例: 代码语言:javascript 复制 #include<stdio.h>#include<stdlib.h>typedef int ElementType;typedef struct LNode*PtrToLNode;struct LNode{ElementType Data;PtrToLNode Next;};typedef PtrToLNode List;ListRead();/* 细节在此不表 */intLength(Lis...