数据结构课后习题答案详解_第1页
数据结构课后习题答案详解_第2页
数据结构课后习题答案详解_第3页
数据结构课后习题答案详解_第4页
数据结构课后习题答案详解_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

数据结构习题集答案(C语言版严蔚敏)描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。解:头指针是指向链表中第一个结点的指针。首元结点是指链表中存储第一个数据元素的结点。头结点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为了方便对链表的操作。它可以对空表、非空表以及首元结点的操作进行统一处理。解:(1)在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与元素在表中的位置有关。(2)顺序表中逻辑上相邻的元素的物理位置必定紧邻。单链表中逻辑上相邻的元素的物理位置不一定紧邻。(3)在单链表中,除了首元结点外,任一结点的存储位置由其前驱结点的链域的值指示。(4)在单链表中设置头结点的作用是插入和删除首元结点时不用进行特殊处理。在什么情况下用顺序表比链表好?解:当线性表的数据元素在物理位置上是连续存储的时候,用顺序表比用链表好,其特点是可以进行随机存取。对以下单链表分别执行下列各程序段,并画出结果示意图。画出执行下列各行语句后各指针及链表的示意图。L=(LinkList)malloc(sizeof(LNode));P=L;for(i=1;i<=4;i++){P->next=(LinkList)malloc(sizeof(LNode));P=P->next;P->data=i*2-1;}P->next=NULL;for(i=4;i>=1;i--)Ins_LinkList(L,i+1,i*2);for(i=1;i<=3;i++)Del_LinkList(L,i);c.在表首插入S结点的语句序列是__________________。d.在表尾插入S结点的语句序列是__________________。PnextS(2)P->next=P->next->next;(3)P->next=S->next;(4)S->next=P->next;SnextL)S->next=NULL;(8)while(P->next!=Q)P=P->next;(9)while(P->next!=NULL)P=P->next;b.(7)(11)(8)(4)(1)c.(5)(12)d.(9)(1)(6)a.删除P结点的直接后继结点的语句序列是____________________。b.删除P结点的直接前驱结点的语句序列是____________________。c.删除P结点的语句序列是____________________。d.删除首元结点的语句序列是____________________。e.删除尾元结点的语句序列是____________________。PPnextPnextP(3)P->next=P->next->next;(4)P=P->next->next;(5)while(P!=NULL)P=P->next;(6)while(Q->next!=NULL){P=Q;Q=Q->next;}(7)while(P->next!=Q)P=P->next;(8)while(P->next->next!=Q)P=P->next;(9)while(P->next->next!=NULL)P=P->next;QP->next;LL->next;eQb.(10)(12)(8)(3)(14)c.(10)(12)(7)(3)(14)d.(12)(11)(3)(14)e.(9)(11)(3)(14)已知P结点是某双向链表的中间结点,试从下列提供的答案中选择合适的语句序列。c.删除P结点的直接后继结点的语句序列是_______________________。d.删除P结点的直接前驱结点的语句序列是_______________________。e.删除P结点的语句序列是_______________________。(1)P->next=P->next->next;(2)P->priou=P->priou->priou;PnextSPpriou=S;SnextPSpriou=P;(7)S->next=P->next;(8)S->priou=P->priou;(9)P->priou->next=P->next;(10)P->priou->next=P;(11)P->next->priou=P;(12)P->next->priou=S;(13)P->priou->next=S;(14)P->next->priou=P->priou;QP->next;Q=P->priou;ePeQb.(8)(4)(5)(13)c.(15)(1)(11)(18)d.(16)(2)(10)(18)e.(14)(9)(17)简述以下算法的功能。A=(a1,^,am)B=(b1,tu,n)A,B,ABA,=BinA,B,士A,B,A想A>BAB(a,^,a)(a,^,a)A=(a,a,^,a)B=(b,b,^,b)StatusListChange_DuL(DuLinkList&L){inti;DuLinkListp,q,r;p=L->next;r=L->pre;while(p!=r){if(i%2==0){qp;p=p->next;m之1(x)P(x)2=P(x)_Pm(x)pp^mp_1ppp1pppppppn00n1n212njkijkijkiijkpppjki2n1olor;Push(s,g[][]);while(!StackEmpty(s)){Pop(s,e);CurPos=;g[][].Color=FillColor;g[][].Visited=1;ifM&!g[+1][].Visited&&g[+1][].Color==OldColor)Push(s,g[+1][]);if&&!g[][].Visited&&g[][].Color==OldColor)Push(s,g[][]);ifN&!g[][+1].Visited&&g[][+1].Color==OldColor)Push(s,g[][+1]);if&&!g[][].Visited&&g[][].Color==OldColor)Push(s,g[][]);}}voidCreateGDS(ElemTypeg[M][N]){inti,j;for(i=0;i<M;i++)for(j=0;j<N;j++){g[i][j].=i;g[i][j].=j;g[i][j].Visited=0;g[i][j].Color=0;}for(i=2;i<5;i++)for(j=2;j<4;j++)g[i][j].Color=3;for(i=5;i<M-1;i++)for(j=3;j<6;j++)g[i][j].Color=3;}voidShowGraphArray(ElemTypeg[M][N]){inti,j;for(i=0;i<M;i++){for(j=0;j<N;j++)cout<<g[i][j].Color;cout<<endl;}}假设表达式有单字母变量和双目四则运算符构成。试写一个算法,将一个通常书写形式且书写正确的表达式转换为逆波兰表达式。.#格式voidInversePolandExpression(charBuffer[]){Stacks;InitStack(s);#defineRS4inti=0,j=0;ElemTypee;Push(s,Buffer[i]);while(Buffer[i]!='#'){if(!IsOperator(Buffer[i])){AAp2p2pp2Aep2Aen1m0akmm,nakmm1,1m0,n0iiij2fmaxnfmaxijf(i)(n1)i1i2122nf(j)jnk最后一组可能出现不足k个元素的情况,此时最后一组为剩余元素加第一组的前几个元素共k个构成最后一组。voidRRMove(ElemTypeA[],intk,intn){ElemTypee;inti=0,j,p;while(i<n-k){p=i/k+1;for(j=0;j<k;j++){e=A[j];A[j]=A[(p*k+j)%n];A[(p*k+j)%n]=e;}}}#include<>#defineCS4typedefintElemType;typedefstruct{ElemTypee;inti,j;intFlags;}NodeType;voidInitialize(NodeTypea[RS][CS],ElemTypeA[RS][CS]);voidSaddlePoint(NodeTypea[RS][CS]);ElemTypeRowMin(NodeTypea[RS][CS],intk);ElemTypeColMax(NodeTypea[RS][CS],intk);voidShow(NodeTypea[RS][CS]);intmain(){ElemTypeA[RS][CS]={NodeTypea[RS][CS];Initialize(a,A);SaddlePoint(a);Show(a);return0;}voidInitialize(NodeTypea[RS][CS],ElemTypeA[RS][CS]){inti,j;for(i=0;i<RS;i++){for(j=0;j<CS;j++){a[i][j].e=A[i][j];a[i][j].i=i;a[i][j].j=j;a[i][j].Flags=0;}}}voidSaddlePoint(NodeTypea[RS][CS]){inti,j;ElemTypex,y;for(i=0;i<RS;i++){x=RowMin(a,i);for(j=0;j<CS;j++){y=ColMax(a,j);if(a[i][j].e==x&&a[i][j].e==y)a[i][j].Flags=1;}}}ElemTypeRowMin(NodeTypea[RS][CS],intk){ElemTypex;x=a[k][0].e;inti;for(i=1;i<CS;i++)if(x>a[k][i].e){x=a[k][i].e;}returnx;}ElemTypeColMax(NodeTypea[RS][CS],intk){ElemTypex;x=a[0][k].e;inti;for(i=1;i<RS;i++)if(x<a[i][k].e){x=a[i][k].e;}returnx;}voidShow(NodeTypea[RS][CS]){for(inti=0;i<RS;i++)for(intj=0;j<CS;j++)if(a[i][j].Flags)cout<<i<<""<<j<<"isasaddlepoint"<<endl;}typedefintElemType;classTriple{public:introw;intcol;ElemTypee;Triple(){}virtual~Triple(){}BOOLoperator<(Tripleb);BOOLoperator==(Tripleb);BOOLTriple::operator<(Tripleb){if(row<returnTRUE;if(row==&&col<returnTRUE;returnFALSE;}BOOLTriple::operator==(Tripleb){if(row==&&col==returnTRUE;sereturnFALSE;}classCSparseMat{public:CSparseMat(){}virtual~CSparseMat(){}CSparseMat(intr,intc,intn);CSparseMatoperator+(CSparseMatB);voidShowSparse(CDC*pDC);Triple*m_pt;ow=;m_pt[i].col=;m_pt[i].e=;}}}voidCSparseMat::ShowSparse(CDC*pDC){charstr[10];intk=0;for(inti=0;i<m_nRow;i++){for(intj=0;j<m_nCol;j++){if(m_pt[k].row==i&&m_pt[k].col==j){itoa(m_pt[k].e,str,10);k++;}elseitoa(0,str,10);pDC->TextOut(0+j*20,0+i*20,str,strlen(str));}}}ow=m_pt[i].row;[k].col=m_pt[i].col;[k].e=m_pt[i].e;}elseif(m_pt[i]==[j]){[k].row=m_pt[i].row;[k].col=m_pt[i].col;[k].e=m_pt[i].e+[j].e;i++;j++;}else{[k].row=[j].row;[k].col=[j].col;ke[j].e;kHkH1k1}}k++;}while(i<m_nTrs){[k].row=m_pt[i].row;[k].col=m_pt[i].col;[k].e=m_pt[i].e;k++;}while(j<{[k].row=[j].row;[k].col=[j].col;kej].e;k++;}=k;returntemp;}#include<>#include<>#defineMax128typedefintElemType;typedefstruct{intcol;ElemTypee;}Twin;classCSparseMat{public:CSparseMat(){}CSparseMat(intr,intc,intn);virtual~CSparseMat(){}voidShowSparse(inti,intj);Twin*m_pt;ol>>m_pt[i].e;}for(i=0;i<m_nRow;i++){cout<<"请输入每行第一个非零元在二元组中的序号(没有输入-1):";cin>>rpos[i];ol==j)x=m_pt[k].e;k++;}}cout<<x<<endl;}intmain(){CSparseMatA(3,3,5);return0;}typedefintElemType;typedefstructOLNode{introw;intcol;ElemTypee;structOLNode*right,*down;}OLNode,*OLink;classCCrossListMat{public:OLink*RHead,*CHead;nnn2knnn2k123k123kikk0kkk01010k_11k_10k_10010k_1k_1333

温馨提示

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

评论

0/150

提交评论