欢迎来到天天文库
浏览记录
ID:61125
大小:4.31 MB
页数:33页
时间:2017-05-06
《航空工业出版社《数据结构》课后题答案.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第1章数据结构导论一、填空题1.集合结构,线性结构,树形结构,图状结构2.顺序存储结构,链式存储结构3.有限性,确定性,可行性,输入,输出4.时间复杂度,空间复杂度二、分析下面程序段的时间复杂度。1.O(m*n)22.O(n)三、上机操作题1.解答:#includevoidmain(){floata[10];inti,n;floats=0;printf("输入数组中元素的个数n:");scanf("%d",&n);for(i=0;i2、&a[i]);s=s+a[i];}printf("数组中所有元素之和为:%f",s);}2.解答:#includevoidmain(){intx,y,z,t;printf("请依次输入x、y和z的值:");scanf("%d%d%d",&x,&y,&z);数据结构if(x3、、填空题1.数组2.数据元素的物理位置,指针3.单链表,循环链表,双向链表4.数据,数据元素本身数据信息,指针,直接后继元素地址信息5.顺序,链式二、选择题1.B2.D3.C4.C5.A2课后习题答案6.B7.C8.B9.C10.B三、上机操作题1.解答:voidReverse(ElemTypeA[],intn){ElemTypetemp;inti;for(i=0;i4、dDelMax(LinkList*list){Node*p,*q,*r,*s;q=*list;//q为链表中第一个结点p=list->next;//p为链表中第二个结点r=*list;while(p!=NULL){if(p->data>q->data){q=p;//保存当前最大值结点s=r;//保存当前最大值结点的前驱}r=p;//保存p所指结点位置p=p->next;//p指向下一结点}if(q==*list)//链表中第一个结点为最大值结点*list=(*list)->next;//删除第一个结点else//最大值结点不5、是链表的第一个结点s->next=q->next;//删除q所指结点3数据结构free(q);//释放q所指结点的空间}3.解答:voidDeleteItem(DLinkList*list,ElemTypeitem){DNode*q;q=(*list)->next;//q指向头结点的后继while(q!=*list){if(q->data==item)//q所指结点的值为item{q->prior->next=q->next;//删除q所指结点q->next->prior=q->prior;free(q);//释放q所指结点6、的空间}q=q->next;//q指向下一结点}}4.解答:voidInsertItem(DLinkListq,ElemTypeitem){DLinkListp;p=(DLinkList)malloc(sizeof(DNode));//生成新结点p->data=item;//新结点的数据域赋值p->prior=q;//将新结点插入到q所指结点之后p->next=q->next;//修改p所指结点的指针域q->next=p;//修改q所指结点的后继p->next->prior=p;//修改p的后继结点的前驱}第3章栈和队列一、7、填空题1.线性2.栈顶,队尾,队头3.后进先出,先进先出4课后习题答案4.数组,指示栈顶元素的位置5.将栈顶指针后移一个位置,将被插入元素放在修改后的栈顶指针所指出的位置6.链式二、选择题1.C2.D3.C4.C5.B6.A7.B8.D9.C10.D三、上机操作题1.解答:表3-1算术表达式求值的过程步骤OPTR栈OPND栈当前读入字符步骤OPTR栈OPND栈当前读入字符1#358#-/355022#35-9#-/35502+3#-35510#-3525+4#-355*11#10+5#-*3551012#+1056#-*358、510/13#+105#7#-3550/14#15#2.解答:charop[7]={'+','-','*','/','(',')','#'};//算符数组charcmp[7][7]={{'>','>','<','<','<','>','>'},{'>','>','<','<','<','>
2、&a[i]);s=s+a[i];}printf("数组中所有元素之和为:%f",s);}2.解答:#includevoidmain(){intx,y,z,t;printf("请依次输入x、y和z的值:");scanf("%d%d%d",&x,&y,&z);数据结构if(x3、、填空题1.数组2.数据元素的物理位置,指针3.单链表,循环链表,双向链表4.数据,数据元素本身数据信息,指针,直接后继元素地址信息5.顺序,链式二、选择题1.B2.D3.C4.C5.A2课后习题答案6.B7.C8.B9.C10.B三、上机操作题1.解答:voidReverse(ElemTypeA[],intn){ElemTypetemp;inti;for(i=0;i4、dDelMax(LinkList*list){Node*p,*q,*r,*s;q=*list;//q为链表中第一个结点p=list->next;//p为链表中第二个结点r=*list;while(p!=NULL){if(p->data>q->data){q=p;//保存当前最大值结点s=r;//保存当前最大值结点的前驱}r=p;//保存p所指结点位置p=p->next;//p指向下一结点}if(q==*list)//链表中第一个结点为最大值结点*list=(*list)->next;//删除第一个结点else//最大值结点不5、是链表的第一个结点s->next=q->next;//删除q所指结点3数据结构free(q);//释放q所指结点的空间}3.解答:voidDeleteItem(DLinkList*list,ElemTypeitem){DNode*q;q=(*list)->next;//q指向头结点的后继while(q!=*list){if(q->data==item)//q所指结点的值为item{q->prior->next=q->next;//删除q所指结点q->next->prior=q->prior;free(q);//释放q所指结点6、的空间}q=q->next;//q指向下一结点}}4.解答:voidInsertItem(DLinkListq,ElemTypeitem){DLinkListp;p=(DLinkList)malloc(sizeof(DNode));//生成新结点p->data=item;//新结点的数据域赋值p->prior=q;//将新结点插入到q所指结点之后p->next=q->next;//修改p所指结点的指针域q->next=p;//修改q所指结点的后继p->next->prior=p;//修改p的后继结点的前驱}第3章栈和队列一、7、填空题1.线性2.栈顶,队尾,队头3.后进先出,先进先出4课后习题答案4.数组,指示栈顶元素的位置5.将栈顶指针后移一个位置,将被插入元素放在修改后的栈顶指针所指出的位置6.链式二、选择题1.C2.D3.C4.C5.B6.A7.B8.D9.C10.D三、上机操作题1.解答:表3-1算术表达式求值的过程步骤OPTR栈OPND栈当前读入字符步骤OPTR栈OPND栈当前读入字符1#358#-/355022#35-9#-/35502+3#-35510#-3525+4#-355*11#10+5#-*3551012#+1056#-*358、510/13#+105#7#-3550/14#15#2.解答:charop[7]={'+','-','*','/','(',')','#'};//算符数组charcmp[7][7]={{'>','>','<','<','<','>','>'},{'>','>','<','<','<','>
3、、填空题1.数组2.数据元素的物理位置,指针3.单链表,循环链表,双向链表4.数据,数据元素本身数据信息,指针,直接后继元素地址信息5.顺序,链式二、选择题1.B2.D3.C4.C5.A2课后习题答案6.B7.C8.B9.C10.B三、上机操作题1.解答:voidReverse(ElemTypeA[],intn){ElemTypetemp;inti;for(i=0;i4、dDelMax(LinkList*list){Node*p,*q,*r,*s;q=*list;//q为链表中第一个结点p=list->next;//p为链表中第二个结点r=*list;while(p!=NULL){if(p->data>q->data){q=p;//保存当前最大值结点s=r;//保存当前最大值结点的前驱}r=p;//保存p所指结点位置p=p->next;//p指向下一结点}if(q==*list)//链表中第一个结点为最大值结点*list=(*list)->next;//删除第一个结点else//最大值结点不5、是链表的第一个结点s->next=q->next;//删除q所指结点3数据结构free(q);//释放q所指结点的空间}3.解答:voidDeleteItem(DLinkList*list,ElemTypeitem){DNode*q;q=(*list)->next;//q指向头结点的后继while(q!=*list){if(q->data==item)//q所指结点的值为item{q->prior->next=q->next;//删除q所指结点q->next->prior=q->prior;free(q);//释放q所指结点6、的空间}q=q->next;//q指向下一结点}}4.解答:voidInsertItem(DLinkListq,ElemTypeitem){DLinkListp;p=(DLinkList)malloc(sizeof(DNode));//生成新结点p->data=item;//新结点的数据域赋值p->prior=q;//将新结点插入到q所指结点之后p->next=q->next;//修改p所指结点的指针域q->next=p;//修改q所指结点的后继p->next->prior=p;//修改p的后继结点的前驱}第3章栈和队列一、7、填空题1.线性2.栈顶,队尾,队头3.后进先出,先进先出4课后习题答案4.数组,指示栈顶元素的位置5.将栈顶指针后移一个位置,将被插入元素放在修改后的栈顶指针所指出的位置6.链式二、选择题1.C2.D3.C4.C5.B6.A7.B8.D9.C10.D三、上机操作题1.解答:表3-1算术表达式求值的过程步骤OPTR栈OPND栈当前读入字符步骤OPTR栈OPND栈当前读入字符1#358#-/355022#35-9#-/35502+3#-35510#-3525+4#-355*11#10+5#-*3551012#+1056#-*358、510/13#+105#7#-3550/14#15#2.解答:charop[7]={'+','-','*','/','(',')','#'};//算符数组charcmp[7][7]={{'>','>','<','<','<','>','>'},{'>','>','<','<','<','>
4、dDelMax(LinkList*list){Node*p,*q,*r,*s;q=*list;//q为链表中第一个结点p=list->next;//p为链表中第二个结点r=*list;while(p!=NULL){if(p->data>q->data){q=p;//保存当前最大值结点s=r;//保存当前最大值结点的前驱}r=p;//保存p所指结点位置p=p->next;//p指向下一结点}if(q==*list)//链表中第一个结点为最大值结点*list=(*list)->next;//删除第一个结点else//最大值结点不
5、是链表的第一个结点s->next=q->next;//删除q所指结点3数据结构free(q);//释放q所指结点的空间}3.解答:voidDeleteItem(DLinkList*list,ElemTypeitem){DNode*q;q=(*list)->next;//q指向头结点的后继while(q!=*list){if(q->data==item)//q所指结点的值为item{q->prior->next=q->next;//删除q所指结点q->next->prior=q->prior;free(q);//释放q所指结点
6、的空间}q=q->next;//q指向下一结点}}4.解答:voidInsertItem(DLinkListq,ElemTypeitem){DLinkListp;p=(DLinkList)malloc(sizeof(DNode));//生成新结点p->data=item;//新结点的数据域赋值p->prior=q;//将新结点插入到q所指结点之后p->next=q->next;//修改p所指结点的指针域q->next=p;//修改q所指结点的后继p->next->prior=p;//修改p的后继结点的前驱}第3章栈和队列一、
7、填空题1.线性2.栈顶,队尾,队头3.后进先出,先进先出4课后习题答案4.数组,指示栈顶元素的位置5.将栈顶指针后移一个位置,将被插入元素放在修改后的栈顶指针所指出的位置6.链式二、选择题1.C2.D3.C4.C5.B6.A7.B8.D9.C10.D三、上机操作题1.解答:表3-1算术表达式求值的过程步骤OPTR栈OPND栈当前读入字符步骤OPTR栈OPND栈当前读入字符1#358#-/355022#35-9#-/35502+3#-35510#-3525+4#-355*11#10+5#-*3551012#+1056#-*35
8、510/13#+105#7#-3550/14#15#2.解答:charop[7]={'+','-','*','/','(',')','#'};//算符数组charcmp[7][7]={{'>','>','<','<','<','>','>'},{'>','>','<','<','<','>
此文档下载收益归作者所有