试写一算法,对单链表实现就地逆置。 参考答案: 你可能感兴趣的试题 参考答案: 2.问答题已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一高效的算法,删除表中所有值相同的多余元素(使得操作后的线性表中所有元素的值均不相同),同时释放被删结点空间,并分析你的算法的时间复杂度。
linklist *back_linklist(linklist *head)//利用栈s逆置单链表 { linklist *p; linkstack *ss=InitStack(); p=head->next; //p指向首元结点 while(p) { push(ss, p->data); //链表结点中的数据入栈 p=p->next; //p指针后移 } p=head->next; //p再指向首元结点 while(!EmptyStack(ss)) ...
/*单链表的链式存储结构类型*/ typedef char DataType;typedef struct node{ DataType data; struct node *next;}ListNode;typedef ListNode *LinkList; //LinkList是指针类型../*创建L函数声明*/ LinkList CreateList();/*输出L函数声明*/ void PrintList(LinkList L);/*逆置实现算法声明*/ LinkList...
计算出圆心到四条边的距离〔设为d1,d2,d3,d4〕,且只要d1~d4有一个小于r,则相交,否则不相交.第24题: 链表操作, 〔1〕.单链表就地逆置, 〔2〕合并链表第25题: 写一个函数,它的原形是int continumax 功能: 在字符串中找出连续最长的数字串,并把这个串的长度返回, 并把这个最长数字串付给...
不适合!虽然有序的单链表的结点是按从小到大(或从大到小)顺序排列,但因其存储结构为单链表,查找结点时只能从头指针开始逐步搜索,故不能进行折半查找。 二分查找的速度在一般情况下是快些,但在特殊情况下未必快。例如所查数据位于首位时,则线性查找快;而二分查找则慢得多。
void Reverse(LinkNode *&L)//单链表结点逆置 { LinkNode *p=L->next,*q;//p指向开始结点 L->next=NULL;//构造只有头结点的单链表L while (p!=NULL)//扫描L的数据结点 {q=p->next;//用q保存其后继结点 p->next=L->next;//采用...
2.7试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1, a2..., an)逆置为(an, an-1,..., a1)。 (1)以一维数组作存储结构,设线性表存于a(1:arrsize)的前elenum个分量中。 (2)以单链表作存储结构。 [方法1]:在原头结点后重新头插一遍 ...
2、试编写程序,实现利用原表的存储空间将线性表(1,2,3,4,5,6,7,8,9)就地逆置为(9,8,7,6,5,4,3,2,1)。(用数组和带表头结点单链表两种存储方法。) 3、分别编写从顺序表和带表头结点的单链表中统计出值为x的元素个数的函数,统计结果由函数值返回。 4、设一个线性表中的元素为正整数或负整...
//本算法将带头结点的单链表L逆置。 //算法思想是先将头结点从表上摘下,然后从第一个元素结点开始,依次___以L为头结点的链表中。 {linklist *p=L->next,*s; // p为工作指针,指向当前元素,s为p的后继指针 L->next=null;//头结点摘下,指针域置空。算法中头指针L始终不变 while (...
四、实验结果与分析 A.检验比较链表 B.检验链表逆置 符合题设,能够实现预定功能。 代码(1)能够比较简单的实数链表的大小; 代码(2)能够实现简单的实数单链表的就地逆置。 五、讨论、心得 熟悉和巩固了单链表的定义和操作,进一步熟悉VS编程的操作要点。 懂得伪代码向实践代码的转化,从实践中编程能力得到了提高。©...