网友您好, 请在下方输入框内输入要搜索的题目:
题目内容
(请给出正确答案)
【论述题】对线性表L=(a1...an) (1)如L为顺序表,请设计算法将L就地逆置。 (2)若L为带头结点的单链表,设计算法将L就地逆置。
参考答案和解析
除第一个和最后一个元素外,其余每个元素都由一个且仅有一个直接前驱和直接后继
更多 “【论述题】对线性表L=(a1...an) (1)如L为顺序表,请设计算法将L就地逆置。 (2)若L为带头结点的单链表,设计算法将L就地逆置。” 相关考题
考题
设计算法将顺序表L中所有的小写字符都移动到表的前端,要求元素的移动次数尽量少。顺序表类型定义如下:typedefchardatatype;//结点的数据类型,假设为charconstintmaxsize=100;//最大表长,假设为100typedefstruct{datatypedata[maxsize];//线性表的存储向量,第一个结点是data[0]intn;//线性表的当前长度}sqlist;//顺序表类型
考题
设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求B、C表利用A表的结点)。
考题
阅读以下说明和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= ______; } }
考题
下列算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同,试完成该算法。 void DelSameNode(LinkList L) //L是带头结点的单链表,删除其中的值重复的结点// {ListNode * p,*q,*r; p=L-next; //p初始指向开始结点// while(p){ //处理当前结点p// q=p; r=q-next; do { //删除与结点*p的值相同的结点// while(rr-data!=p-data){ q=r; r=r-next; } if(r){ //结点*r的值与*p的值相同,删除*r// q-next=r-next; free(r); r=(); } }while( r ); p=p-next; } }
考题
假设线性表采用顺序存储结构,表中元素值为整型。阅读算法f2,设顺序表L=(3,7,3,2,1,1,8,7,3),写出执行算法f2后的线性表L的数据元素,并描述该算法的功能。voidf2(SeqList*L){inti,j,k;k=0;for(i=0;ilength;i++){for(j=0;jdata[i]!=L-data[j];j++);if(j==k){if(k!=i)L-data[k]=L-data[i];k++;}}L-length=k;}
考题
已知一个不带头结点单链表的头指针为L,则在表头元素之前插入一个新结点*s的语句为:()A、 L=s; s->next=L;B、 s->next=L; L=s;C、 s=L; s->next=L;D、 s->next=L; s=L;
考题
已知一个带头结点单链表L,在表头元素前插入新结点 *s的语句为:()A、 L=s;s->next=L;B、 s->next=L-next;L->next=s;C、 s=L;s->next=L;D、 s->next=L; s=L;
考题
单选题已知一个带头结点单链表L,在表头元素前插入新结点 *s的语句为:()A
L=s;s->next=L;B
s->next=L-next;L->next=s;C
s=L;s->next=L;D
s->next=L; s=L;
考题
单选题已知一个不带头结点单链表的头指针为L,则在表头元素之前插入一个新结点*s的语句为:()A
L=s; s->next=L;B
s->next=L; L=s;C
s=L; s->next=L;D
s->next=L; s=L;
考题
填空题判断带头结点的单链表L为空的条件()
热门标签
最新试卷