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