文档详情

数据结构---C语言描述-(耿国华)-课后习题答案.doc

发布:2016-11-06约字共14页下载文档
文本预览下载声明
第一章 习题答案 2、××√ 3、(1)包含改变量定义的最小范围 (2)数据抽象、信息隐蔽 (3)数据对象、对象间的关系、一组处理数据的操作 (4)指针类型 (5)集合结构、线性结构、树形结构、图状结构 (6)顺序存储、非顺序存储 (7)一对一、一对多、多对多 (8)一系列的操作 (9)有限性、输入、可行性4、(1)A(2)C(3)C 5、语句频度为1+(1+2)+(1+2+3)+…+(1+2+3+…+n) 第二章 习题答案 1、(1)一半,插入、删除的位置 (2)顺序和链式,显示,隐式 (3)一定,不一定 (4)头指针,头结点的指针域,其前驱的指针域 2、(1)A(2)A:E、A B:H、L、I、E、A C:F、M D:L、J、A、G或J、A、G (3)D(4)D(5)C(6)A、C 3、头指针:指向整个链表首地址的指针,标示着整个单链表的开始。 头结点:为了操作方便,可以在单链表的第一个结点之前附设一个结点,该结点的数据域可以存储一些关于线性表长度的附加信息,也可以什么都不存。 首元素结点:线性表中的第一个结点成为首元素结点。 4、算法如下: int Linser(SeqList *L,int X) { int i=0,k; if(L-last=MAXSIZE-1) { printf(“表已满无法插入”); return(0); } while(i=L-lastL-elem[i]X) i++; for(k=L-last;k=I;k--) L-elem[k+1]=L-elem[k]; L-elem[i]=X; L-last++; return(1); } 5、算法如下: #define OK 1 #define ERROR 0 Int LDel(Seqlist *L,int i,int k) { int j; if(i1||(i+k)(L-last+2)) { printf(“输入的i,k值不合法”); return ERROR; } if((i+k)==(L-last+2)) { L-last=i-2; ruturn OK; } else {for(j=i+k-1;j=L-last;j++) elem[j-k]=elem[j]; L-last=L-last-k; return OK; } } 6、算法如下: #define OK 1 #define ERROR 0 Int Delet(LInkList L,int mink,int maxk) { Node *p,*q; p=L; while(p-next!=NULL) p=p-next; if(minkmaxk||(L-next-data=mink)||(p-data=maxk)) { printf(“参数不合法”); return ERROR; } else { p=L; while(p-next-data=mink) p=p-next; while(q-datamaxk) { p-next=q-next; free(q); q=p-next; } return OK; } } 9、算法如下: int Dele(Node *S) { Node *p; P=s-next; If(p= =s) {printf(“只有一个结点,不删除”); return 0; } else {if((p-next= =s) {s-next=s; free(p); return 1; } Else { while(p-next-next!=s) P=p-next; P-next=s; Free(p); return 1; } } } 第三章 习题答案 2、(1) 3、栈有顺序栈和链栈两种存储结构。 在顺序栈中,栈顶指针top=-1时,栈为空;栈顶指针top=Stacksize-1时
显示全部
相似文档