淘豆网
下载此文档放大查看缩小查看   1/8
0/100
您的浏览器不支持进度条
更多>>该用户其他文档
下载所得到的文件列表
数据结构第三章.doc
文档介绍:
答:线性结构的特点是在数据元素的非空有限集中,存在惟一的一个被称为“第一个”的数据元素;存在惟一的一个被称做“最后一个”的数据元素;除第一个之外,集合中的每个数据元素均只有一个前驱;;除最后一个之外,集合中每个数据元素均只有一个后继。线性表是最常用且最简单的一种数据结构。一个线性表是n个数据元素的有限序列。线性表是一个相当灵活的数据结构,它的长度可根据需要增长或缩短,即对线性表的数据元素不仅可以访问,还可在在任意位置进行插入和删除操作等。栈是一种特殊的线性结构,从数据的逻辑结构角度来看,栈是线性表,从操作的角度来看,栈的基本操作是线性表操作的子集,是操作受限制的线性表,其特点是栈限定仅在表尾进行插入和删除操作的线性表,它的存取特征是后进先出。三、写出下列程序段的输出结果(栈的元素类型SelemType为char)。Voidmain(){stacks;Charx,y;Initstack(s);x=’c’;y=’k’;Push(s,x);push(s,’a’);push(s,y);Pop(s,x);push(s,’t’);push(s,x);Pop(s,x);push(s,’s’);While(!stackempty(s)){pop(s,y);printf(y);}Printf(x);}输出结果:stack四、简述以下算法的功能(栈的元素类型SelemType为int)。1、statusalgol(stacks){IntI,n,A[255];n=0;while(!stackempty(s)){n++;pop(s,A[n]);}for(i=1;i<=n;i++)push(s,A[i]);}答案:对栈中元素进行反序入栈。2、statusalgo2(stackS,inte){stackT;intd;Initstack(T);While(!stackempty(s)){pop(s,d);If(d!=e)push(T,d);}While(!stackempty(T)){pop(T,d);Push(S,d);}}答案:利用栈T辅助将栈S中所有值为e的数据元素删除。二十八、.假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的置空队、判队空、入队和出队等算法。【分析】带头结点的循环链表表示的队列如图3-7所示,仅有队尾指针rear,但可通过rear->next找到头结点,再通过头结点找到队头,即rear->next->next。图3-7带头结点的循环链表队列【算法】①置空队LinkListSetNull(){LinkListrear;rear=newLNode;rear->next=rear;returnrear;}②判队空intEmpty(LinkListrear){if(rear->next==rear)return1; //若队列为空返回1elsereturn0; //否则返回0}③入队LinkListENQUEUE(LinkListrear,DataTypex){LinkListp;p=newLinkList;p->data=x;p->next=rear->next; //将p插入到rear->next之后rear->next=p;rear=p;returnrear; //返回新的队尾指针}④出队LinkListD 内容来自淘豆网www.taodocs.com转载请标明出处.