计算机类

将一个单链表逆序。

题目

将一个单链表逆序。

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

【论述题】假设有两个按元素值非递减次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值非递增次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。


第2题:

11、为了逆序输出单链表中的结点,以下哪些算法无法实现该功能()。

A.第一步:将单链表逆置; 第二步:输出单链表中的元素; 第三步:将单链表逆置,即恢复之前的单链表。#B.第一步:将单链表中的 元素依次放入一个数组中 第二步:逆序输出该数组中的元素。#C.可用如下代码实现: void reversePrint(Node *p//p初值为单链表第一个结点 { while(p!=NULL) { reversePrint(p->next); printf("%c ",p->data); //假设结点值为字符 }#D.算法思想: 第一步:从头到尾找到最后一个结点; 第二步:从最后一个结点向前依次输出每个结点的值。
D

第3题:

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


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指向下个待逆置结点 }}

第4题:

试设计一个结点数据类型为整型的带表头结点的有序单链表,然后设计一个算法,该算法将这个有序单链表划分成两个单链表,使得第一个单链表中包含原单链表中所有数值为奇数的结点,第二个单链表中包含原单链表中所有数值为偶数的结点,且两个单链表中结点的相对排列顺序与原单链表中相同。 【要求】要求使用原单链表的空间,表头结点可以另辟空间。 【提示】请先在自己的稿纸上作答,然后将全部答题过程及所得结果拍照,以图片形式作为附件上传。请确保照片中的字迹足够清晰、解答过程完整。


D解析:若要删除结点需要改变尾指针的指向。

第5题:

有一个由整数元素构成的非空单链表A,设计一个算法,将一个元素插入到单链表的指定位置pos(pos大于0,小于等于链表长度+1)


第6题:

已知两个带头结点的单链表L1和L2中的结点值均已按升序排序,设计一个算法,将L1和L2合并成一个升序的带头结单链表,并用L1记录新的带头结点单链表。


A

第7题:

下面程序的功能是建立一个单链表(只有头指针,无头节点),将该单链表逆序,并按顺序输出逆序前后的单链表中的所有数据,程序中ReverseList函数和PrintList函数存在若干错误,其他代码无错误,请改正。 程序运行示例: 请输入要输入的数据(以空格隔开,以0结束!) 12 45 87 69 90 24 0↙ 链表元素如下: 12 45 87 69 90 24 链表元素如下: 24 90 69 87 45 12


C 解析:本题要求建立一个structnode类型的数据链表,从main函数可知,h是“头指针”变量,它指向所建立的表的第一个数据,函数的类型应该与h的类型一致,所以应该填streetnode*。

第8题:

循环单链表设置头结点与头指针,将长度n的循环单链表数据结点链接在长度为m的循环单链表之后形成一个循环单链表的时间复杂度为_______。

A.O(1)

B.O(n)

C.O(m)

D.O(m+n)


O(m+n)

第9题:

链表题:一个链表的结点结构

struct Node

{

int data ;

Node *next ;

};

typedef struct Node Node ;

(1)已知链表的头结点head,写一个函数把这个链表

逆序( Intel)


正确答案:

Node * ReverseList(Node *head) //链表逆序
{
if ( head == NULL || head->next == NULL )
return head;
Node *p1 = head ;
Node *p2 = p1->next ;
Node *p3 = p2->next ;
p1->next = NULL ;
while ( p3 != NULL )
{
p2->next = p1 ;
p1 = p2 ;
p2 = p3 ;
p3 = p3->next ;
}
p2->next = p1 ;
head = p2 ;
return head ;
}