您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 结构体、链表综合习题
以下说法中正确的是:。A:一个结构只能包含一种数据类型B:不同结构中的成员不能有相同的成员名C:两个结构变量不可以进行比较D:关键字typedef用于定义新的数据类型C结构体、链表综合习题设有以下说明,则值为210的表达式是:。structs{inta;int*b;};intx0[]={110,120},x1[]={210,220};structsx[]={{100},{200}},*p=x;x[0].b=x0;x[1].b=x1;A:*p-bB.(++p)-aC.*(p++)-bD.*(++p)-bD结构体、链表综合习题struct{intx,y;}c[3]={{1,2},{2,3}};正确的语句是。A:C[2]={3,4};B:C[2]=C[1];C:C[2]=C[1]-C[0];D:if(c[1]c[0])c[2]=c[1];elsec[2]=c[0];B结构体、链表综合习题已知有如下的结构类型定义和变量声明:structstudent{intnum;charname[10];}stu={1,”Mary”},*p=&stu;则下列语句错误的是_____A:printf(“%d”,stu.num);B:printf(“%d”,(&stu)-num);C:printf(“%d”,&stu-num);D:printf(“%d”,p-num);C结构体、链表综合习题已知有结构类型定义:typedefstructex{longintnum;charsex;structex*next;}student;下列叙述错误的是___________。A.structex是结构类型B.student是结构类型的变量名C.ex可缺省D.student不可缺省B结构体、链表综合习题若要使表达式“P++”无语法错误,则变量P不能声明为___________。A.intP;B.doubleP;C.int*P;D.struct{intx;}P;D结构体、链表综合习题数组和链表都可以用于存储一组彼此有关联的数据,以下说法中不正确的是:A:数组占用一块连续的存储区域,链表可能占用若干不连续的存储区域B:数组和链表所占用的存储区域均不能在程序运行期间动态地分配C:数组中的数据可以随机存取或顺序存取,链表中的数据只能顺序存取D:数组的长度是固定的,链表的长度是不固定的B结构体、链表综合习题值为6的表达式为structst{intn;structst*next;}staticstructsta[3]={5,&a[1],7,&a[2],9,’\0’},*p;p=&a[0];A)p++-nB)p-n++C)(*p).n++D)++p-nD结构体、链表综合习题对以下结构体变量example中成员x的引用正确的是struct{intx;inty;}example,*p=&example;A)(*p).example.xB)(*p).xC)p-exampleD)p.example.xB结构体、链表综合习题结构体、链表综合习题对于下列程序段:structSD{intx;floaty;};structSDa[3]={{1001,3.5},{1002,4.5},{1003,4.0}},*p;p=a;则下面不正确的使用是__________。A.(++p)-xB.p++C.(*p).yD.p=&a[0].xD结构体、链表综合习题若有以下程序段:structSD{intx;int*r;};inta=1,b=2,c=3;structSDs[3]={{1001,&a},{1002,&b},{1003,&c}};main(){structSD*p;p=s;……}则以下表达式中值为2的是_________。A.*(++p)-rB.*(p++)-rC.(*p).rD.(p++)-rA结构体、链表综合习题有以下结构体类型的说明和变量定义,并给出图示,则选项中不能把结点b连接到a之后的语句是__________。datanextdatanextabpqstructND{chardata;structND*next;}a,b,*p=&a,*q=&b;A.a.next=q;B.p.next=&b;C.p-next=&b;D.(*p).next=q;B结构体、链表综合习题设有定义如下:typedefstruct{intx,y;}POINT;typedefenum{RED,YELLOW,BLUE,GREEN}COLOR;struct{POINTxy;COLORc;}pixel,*p=&pixel;以下对变量pixel的赋值操作中正确的是。A:pixel={1,2,BLUE};B:scanf(“%d%d%d%d”,p-xy.x,p-xy.y,&pixel.c);C:p-xy.x=1;p-xy.y=2;p-c=BLUE;D:scanf(“%d%d”,&pixel.xy);pixel.color=2;C设链表上的结点的数据结构定义如下:structnode{intx;structnode*next;};函数create的功能是:创建一个有序的链表(结点中x的值按升序排列),链表中结点的个数为参数n的值,函数返回该有序链表的头指针。算法思想如下:每产生一个新结点,插入到链表中的恰当位置,使得插入新结点后的链表仍然保持有序。(27)creat(intn){structnode*p,*p1,*p2,*h=NULL;inti=0;if(n1)returnNULL;while((28)){p=(structnode*)malloc(sizeof(structnode));scanf(“%d”,&p-x);p-next=NULL;if(h==NULL)(29);else{p1=p2=h;while(p2&&p-x=p2-x){p1=p2;p2=p2-next;}if(p2==h){(30);h=p;}else{p-next=p2;p1-next=p;}}i++;}returnh;}structnode*inh=pp-next=h已知某链表中结点的数据结构定义如下:structnode{intx;structnode*next;};函数find_del功能是:在参数head指向的链表中查找并删除x值最大的结点,如有多个相同的x值最大的结点,删除第一个结点,保存该结点的地址到pm指向的指针变量中,函数返回链表首结点的指针。structnode*find_del(structnode*head,structnode**pm){stuctnode*p1,*p2,*pmax,*pre;if(head==NULL)returnNULL;pmax=(1);p2=p1=pmax;while(p1){if(p1-x(2)){pre=p2;pmax=p1;}p2=p1;p1=p1-next;}if(pmax==head)head=pmax-next;else(3)=pmax-next;(4)=pmax;returnhead;}1head2pmax-x3pre-next4*pm设链表上的结点的数据结构定义如下:structnode{intx;structnode*next;};假设已经建立了一个链表,h为链首指针。函数deladd的功能是:若链表上能找到结点的x值为value,则从链表上删除该结点(假定链表上的各个结点的值是不同的);否则构造一个新结点,其值为value,并将新结点插入链尾。该函数要求返回新链表的首指针。structnode*deladd(structnode*h,intvalue){structnode*p1,*p2;intflag=0;p1=p2=h;while(p1&&flag==0){if(p1-x==value){flag=1;if(p1==h){h=(1);free(p1);}else{p2-next=(2);free(p1);}}else{p2=p1;p1=(3);}}if(flag==0){p1=(structnode*)malloc(sizeof(structnode));p1-x=value;p1-next=0;if(h==0)h=p1;else(4);}returnh;}(1)h-next(2)p1-next(3)p1-next(4)p2-next=p1颠倒链表的链接顺序structnode{intdata;structnode*next;};reverse(structnode*h){structnode*p,*v1,*v2;_______________;v1=NULL;while(v2!=NULL){_________________;v2-next=v1;v1=v2;v2=p;}h=v1;returnh;}v2=hP=v2-next已知某链表中结点的数据结构定义如下:#includestdio.hstructnode{intx;structnode*next;};函数loop的功能是:根据dir的值循环移位head指向的链表中的所有结点,当dir为正数时实现循环右移一次,否则循环左移一次。函数返回链表首结点的指针。例如,移位前的链表数据:head-1-3-5-4,移一次后的链表数据:head-4-1-3-5。算法提示:循环右移时,将链表最后一个结点删除,再将其插入到链表首部;循环左移时,将链表第一个结点删除,再将其连接到链表尾部。structnode*loop(structnode*head,intdir){structnode*p1,*p2;p1=head;if(p1==NULL||p1-next==NULL)returnhead;if(dir=0){while(p1-next){p2=p1;p1=p1-next;}__(1)__=NULL;p1-next=_(2)__;head=p1;}else{head=___(3)__;p2=head;while(p2-next)p2=p2-next;_(4)_;p1-next=NULL;}returnhead;}(1)p2-next(2)head(3)p1-next(4)p2-next=p1.以下程序中函数padd的功能是:调整pa指向的链表中各结点的位置,使得所有x值为偶数的结点出现在链表的前半部,所有x值为奇数的结点出现在链表的后半部。#includestdlib.htypedefstructp{intx;structp*next;}PNODE;PNODE*padd(PNODE*pa){PNODE*p1,*p2,*p;p1=p2=pa;while(p1){if(p1-x%2==0&&(1)){p=p1;p1=p1-next;(2)=p1;p-next=pa;(3);}else{p2=p1;p1=p1-next;}}returnpa;}main(){PNODEa[10]={{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}},*ha=a,*p;inti;for(i=0;i9;i++)a[i].next=&a[i+1];a[9].next=(4);ha=padd(ha);p=ha;printf(\n);while(p){printf(%d-,p-x);p=p-next;}}(1)p1!=pa(2)p2-next(3)pa=p(4)NULL.下面程序用来从键盘上读入一行字符,并按输入顺序建立一个链式结点序列,新添加的结点存入当前刚读入的字符,读入完成后,再按该链式序列的反向顺序输出这一行字符,最后,释放全部结点空间。请在处填入正确内容。#definegetnode(type)(type*)malloc(sizeof(type))#definenull0#include“stdio.h”main(){structnode{charinfo;struc
本文标题:结构体、链表综合习题
链接地址:https://www.777doc.com/doc-3126304 .html