结构体、链表综合习题ppt课件_第1页
结构体、链表综合习题ppt课件_第2页
结构体、链表综合习题ppt课件_第3页
结构体、链表综合习题ppt课件_第4页
结构体、链表综合习题ppt课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,以下说法中正确的是:。A:一个结构只能包含一种数据类型B:不同结构中的成员不能有相同的成员名C:两个结构变量不可以进行比较D:关键字typedef用于定义新的数据类型,C,结构体、链表综合习题,.,设有以下说明,则值为210的表达式是:。structsinta;int*b;intx0=110,120,x1=210,220;structsx=100,200,*p=x;x0.b=x0;x1.b=x1;A:*p-bB.(+p)-aC.*(p+)-bD.*(+p)-b,D,结构体、链表综合习题,.,structintx,y;c3=1,2,2,3;正确的语句是。A:C2=3,4;B:C2=C1;C:C2=C1-C0;D:if(c1c0)c2=c1;elsec2=c0;,B,结构体、链表综合习题,.,已知有如下的结构类型定义和变量声明:structstudentintnum;charname10;stu=1,”Mary”,*p=,C,结构体、链表综合习题,.,已知有结构类型定义:typedefstructexlongintnum;charsex;structex*next;student;下列叙述错误的是_。structex是结构类型student是结构类型的变量名C.ex可缺省D.student不可缺省,B,结构体、链表综合习题,.,若要使表达式“P+”无语法错误,则变量P不能声明为_。A.intP;B.doubleP;C.int*P;D.structintx;P;,D,结构体、链表综合习题,.,数组和链表都可以用于存储一组彼此有关联的数据,以下说法中不正确的是:A:数组占用一块连续的存储区域,链表可能占用若干不连续的存储区域B:数组和链表所占用的存储区域均不能在程序运行期间动态地分配C:数组中的数据可以随机存取或顺序存取,链表中的数据只能顺序存取D:数组的长度是固定的,链表的长度是不固定的,B,结构体、链表综合习题,.,值为6的表达式为structstintn;structst*next;staticstructsta3=5,A)p+-nB)p-n+C)(*p).n+D)+p-n,D,结构体、链表综合习题,.,对以下结构体变量example中成员x的引用正确的是structintx;inty;example,*p=(*p).example.xB)(*p).xC)p-exampleD)p.example.x,B,结构体、链表综合习题,.,结构体、链表综合习题,对于下列程序段:structSDintx;floaty;structSDa3=1001,3.5,1002,4.5,1003,4.0,*p;p=a;则下面不正确的使用是_。A.(+p)-xB.p+C.(*p).yD.p=int*r;inta=1,b=2,c=3;structSDs3=1001,则以下表达式中值为2的是_。A.*(+p)-rB.*(p+)-rC.(*p).rD.(p+)-r,A,.,结构体、链表综合习题,有以下结构体类型的说明和变量定义,并给出图示,则选项中不能把结点b连接到a之后的语句是_。datanextdatanextabpqstructNDchardata;structND*next;a,b,*p=,B,.,结构体、链表综合习题,设有定义如下:typedefstructintx,y;POINT;typedefenumRED,YELLOW,BLUE,GREENCOLOR;structPOINTxy;COLORc;pixel,*p=,C,.,设链表上的结点的数据结构定义如下:structnodeintx;structnode*next;函数create的功能是:创建一个有序的链表(结点中x的值按升序排列),链表中结点的个数为参数n的值,函数返回该有序链表的头指针。算法思想如下:每产生一个新结点,插入到链表中的恰当位置,使得插入新结点后的链表仍然保持有序。,.,(27)creat(intn)structnode*p,*p1,*p2,*h=NULL;inti=0;if(nx);p-next=NULL;if(h=NULL)(29);elsep1=p2=h;while(p2,structnode*inext=h,.,已知某链表中结点的数据结构定义如下:structnodeintx;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,.,设链表上的结点的数据结构定义如下:structnodeintx;structnode*next;假设已经建立了一个链表,h为链首指针。函数deladd的功能是:若链表上能找到结点的x值为value,则从链表上删除该结点(假定链表上的各个结点的值是不同的);否则构造一个新结点,其值为value,并将新结点插入链尾。该函数要求返回新链表的首指针。,.,structnode*deladd(structnode*h,intvalue)structnode*p1,*p2;intflag=0;p1=p2=h;while(p1,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,.,颠倒链表的链接顺序structnodeintdata;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,已知某链表中结点的数据结构定义如下:#includestructnodeintx;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;elsehead=_(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值为奇数的结点出现在链表的后半部。#includetypedefstructpintx;structp*next;PNODE;PNODE*padd(PNODE*pa)PNODE*p1,*p2,*p;p1=p2=pa;while(p1)if(p1-x%2=0,(1)p1!=pa(2)p2-next(3)pa=p(4)NULL,.下面程序用来从键盘上读入一行字符,并按输入顺序建立一个链式结点序列,新添加的结点存入当前刚读入的字符,读入完成后,再按该链式序列的反向顺序输出这一行字符,最后,释放全部结点空间。请在处填入正确内容。#definegetnode(type)(type*)malloc(sizeof(type)#definenull0#include“stdio.h”main()structnodecharinfo;structnode*link;*top,*p;charc;top=(1);while(c=getchar()!=n)p=getnode(2);p-info=c;p-link=(3);top=(4);while(top!=null)p=(5);top=(6);putchar(p-info);free(p);,(1)null(2)structnode(3)top(4)p(5)top(6)top-link,.设链表上的每个结点的数据结构为:structnodeintdata;structnode*next;假设已建立了一条链表,链表上第一个结点的值为该链表上结点的个数.下面的函数要删除链上具有相同值的所有结点,使得结点上的数值各不相同.structnode*delsamenode(structnode*head)structnode*p,*q,*r;p=head-next;if(p!=NULL)while(p-next!=NULL)q=p;while(1)if(2)r=q-next;q-next=q-next-next;free(r);_(3)_;elseq=q-next;p=p-next;,(1)(q-next!=NULL(2)q-next-data=p-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论