ilikenba 发表于 2005-3-11 11:06

[分享]2002年《算法与数据结构》复习

<P  align=center>2002年《算法与数据结构》复习<p></p></P>
<P  align=center><p> </p></P>
<P  align=center>第一讲  表<p></p></P>
<P  align=center><p> </p></P>
<P >一、  基本概念<p></p></P>
<P >表、栈、队列和串的概念及其特征<p></p></P>
<P >*表的特征:表中元素具有同一数据类型;表是由有限个元素组成的有限序列;表中元素之间的逻辑关系是一种邻接关系(前驱和后继),因此表结构是一种线性结构,即线性表;作为抽象数据类型,表支持9种基本运算。<p></p></P>
<P >二、  表和串9种基本运算<p></p></P>
<P >*表的9种运算Insert(x, p, l), Locate(x, l), Retrieve(p, l), Delete(p, l), Next(p, l), Previous(p,l), Makenull(l), First(l), Printlist(l)<p></p></P>
<P >*END(l)的含义<p></p></P>
<P >*会利用上述基本运算实现表的其它运算例如教材P41例子<p></p></P>
<P >*串的9种运算及会利用其实现串的其它运算<p></p></P>
<P >三、  表、栈、队列和串的实现方法<p></p></P>
<P >*表的数组实现和指针实现各自的特点<p></p></P>
<P >*循环链表的特点<p></p></P>
<P >*常用的栈运算:EMPTY(S),其为一个函数,当S为空时,其值为true, 否则其值为false<p></p></P>
<P > 两栈共享操作;会利用栈设计算法<p></p></P>
<P >*常用的队列运算:EMPTY(S),其为一个函数,当S为空时,其值为true, 否则其值为false;队列为空为满的条件;会利用队列设计算法<p></p></P>
<P >*串的实现各种方法的特点(串的数组实现、串的指针实现、串的块链实现和串的堆结构)<p></p></P>
<P >*朴素的模式匹配算法的数组实现和指针实现及实例执行过程<p></p></P>
<P >*前缀函数Л(q)的计算及KMP算法进行模式匹配时每一趟的匹配过程。<p></p></P>
<P >四、  习题<p></p></P>
<P >1、  利用表的9种基本运算实现将两个有序表合成一个有序表;<p></p></P>
<P >2、  设多项式P(x)用单链表存储,链表中的每个单元由3个域构成,它们分别存放多项式P(x)中一个项的系数、指数和指向下一单元的指针。设计一算法用于求P(x)的微商。<p></p></P>
<P >3、  计算模式串‘ababababca’的前缀函数Л。<p></p></P>
<P >4、  利用串的9种基本运算实现把串s=’(xyz)*’转换为串t=’(x+y)*z’<p></p></P>
<P >5、  设单链表中存放着n个字符,试设计算法判断字符串是否中心对称。<p></p></P>
<P ><p> </p></P>
<P >解答<p></p></P>
<P >1、   procedure merge(var l1,l2,l3:list);<p></p></P>
<P >var p,q,r:position;<p></p></P>
<P >begin<p></p></P>
<P >  p:=first(l1);<p></p></P>
<P >  q:=first(l2);<p></p></P>
<P >  r:=first(l3);<p></p></P>
<P >while (p&lt;&gt;end(l1)) and (q&lt;&gt;end(l2)) do<p></p></P>
<P >   begin <p></p></P>
<P >     if retrieve(p,l1)&lt;retrieve(q,l2) then<p></p></P>
<P >        begin <p></p></P>
<P >              insert(retrieve(p,l1),r,l3);<p></p></P>
<P >              p:=next(p,l1)<p></p></P>
<P >        end<p></p></P>
<P >      else<p></p></P>
<P >        begin <p></p></P>
<P >              insert(retrieve(q,l2),r,l3);<p></p></P>
<P >              p:=next(q,l2)<p></p></P>
<P >        end;<p></p></P>
<P >   r:=next(r,l3)<p></p></P>
<P >end;<p></p></P>
<P ><p> </p></P>
<P >while p&lt;&gt;end(l1) do<p></p></P>
<P >begin<p></p></P>
<P >       insert(retrieve(p,l1),r,l3);<p></p></P>
<P >       p:=next(p,l1)<p></p></P>
<P >   r:=next(r,l3)<p></p></P>
<P >end;<p></p></P>
<P >while q&lt;&gt;end(l2) do<p></p></P>
<P >begin<p></p></P>
<P >       insert(retrieve(q,l2),r,l3);<p></p></P>
<P >       q:=next(q,l1)<p></p></P>
<P >   r:=next(r,l3)<p></p></P>
<P >end;<p></p></P>
<P >end;<p></p></P>
<P ><p> </p></P>
<P >2、   Type <p></p></P>
<P >celltype=record<p></p></P>
<P >coef:integer;<p></p></P>
<P >exp:integer;<p></p></P>
<P >next:^celltype<p></p></P>
<P >   end;<p></p></P>
<P >list:celltype;<p></p></P>
<P >position:celltype;<p></p></P>
<P >procedure dif(var l:list);<p></p></P>
<P >var <p></p></P>
<P >   q:position;<p></p></P>
<P >begin<p></p></P>
<P >  q:=l;<p></p></P>
<P >while q^.next&lt;&gt;nil do<p></p></P>
<P >begin<p></p></P>
<P >   q:=q^.next;<p></p></P>
<P >   if q^.exp&gt;0 then<p></p></P>
<P >     begin<p></p></P>
<P >     q^.coef:=(q^.coef)*(q^.exp);<p></p></P>
<P >     q^.exp:=q^.exp-1;<p></p></P>
<P >     End<p></p></P>
<P >  Else<p></p></P>
<P >    Delete(q)<p></p></P>
<P >  End<p></p></P>
<P >End;<p></p></P>
<P >3、   Л(q)=max{l|0≤l&lt;q且t是t后缀}<p></p></P>
<P >   <p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=26>
<P >1<p></p></P></TD>
<TD  vAlign=top width=22>
<P >2<p></p></P></TD>
<TD  vAlign=top width=24>
<P >3<p></p></P></TD>
<TD  vAlign=top width=24>
<P >4<p></p></P></TD>
<TD  vAlign=top width=24>
<P >5<p></p></P></TD>
<TD  vAlign=top width=24>
<P >6<p></p></P></TD>
<TD  vAlign=top width=24>
<P >7<p></p></P></TD>
<TD  vAlign=top width=24>
<P >8<p></p></P></TD>
<TD  vAlign=top width=24>
<P >9<p></p></P></TD>
<TD  vAlign=top width=36>
<P >10<p></p></P></TD></TR>
<TR >
<TD  vAlign=top width=26>
<P >a<p></p></P></TD>
<TD  vAlign=top width=22>
<P >b<p></p></P></TD>
<TD  vAlign=top width=24>
<P >a<p></p></P></TD>
<TD  vAlign=top width=24>
<P >b<p></p></P></TD>
<TD  vAlign=top width=24>
<P >a<p></p></P></TD>
<TD  vAlign=top width=24>
<P >b<p></p></P></TD>
<TD  vAlign=top width=24>
<P >a<p></p></P></TD>
<TD  vAlign=top width=24>
<P >b<p></p></P></TD>
<TD  vAlign=top width=24>
<P >c<p></p></P></TD>
<TD  vAlign=top width=36>
<P >A<p></p></P></TD></TR>
<TR >
<TD  vAlign=top width=26>
<P >0<p></p></P></TD>
<TD  vAlign=top width=22>
<P >0<p></p></P></TD>
<TD  vAlign=top width=24>
<P >1<p></p></P></TD>
<TD  vAlign=top width=24>
<P >2<p></p></P></TD>
<TD  vAlign=top width=24>
<P >3<p></p></P></TD>
<TD  vAlign=top width=24>
<P >4<p></p></P></TD>
<TD  vAlign=top width=24>
<P >5<p></p></P></TD>
<TD  vAlign=top width=24>
<P >6<p></p></P></TD>
<TD  vAlign=top width=24>
<P >0<p></p></P></TD>
<TD  vAlign=top width=36>
<P >1<p></p></P></TD></TR></TABLE>
<P ><p> </p></P>
<P >4、   t=concat(rep(sub(s,1,5),’y’,’+’),<p></p></P>
<P >rep(sub(s,6,1),’*’,’*y’))<p></p></P>
<P >s=concat(rep(sub(t,1,5),’+’,’y’),<p></p></P>
<P >rep(sub(t,6,2),’*y’,’*’))<p></p></P>
<P >5、   function judge(l:list):integer;<p></p></P>
<P >var p:position;<p></p></P>
<P >s:stack;<p></p></P>
<P >     I:integer;<p></p></P>
<P >  begin<p></p></P>
<P >      p:=l^.next;I:=1;<p></p></P>
<P >      while p&lt;&gt;nil do<p></p></P>
<P >         begin<p></p></P>
<P >            s^.top:=s^.top+1;<p></p></P>
<P >            s^.data:=p^.data<p></p></P>
<P >            p:=p^.next<p></p></P>
<P >         end;<p></p></P>
<P >      p:=l^.next;<p></p></P>
<P >      while p&lt;&gt;nil do<p></p></P>
<P >         if (p^.data=s^.data) then<p></p></P>
<P >             begin<p></p></P>
<P >               p:=p^.next;<p></p></P>
<P >               s^.top:=s^.top-1;<p></p></P>
<P >             end<p></p></P>
<P >         else<p></p></P>
<P >           begin<p></p></P>
<P >             I:=0;<p></p></P>
<P >             P:=nil<p></p></P>
<P >           End;<p></p></P>
<P >          Return(I)<p></p></P>
<P >End;<p></p></P>
<P >五、  思考题<p></p></P>
<P >1、               对表A=(a<SUB>1</SUB>,a<SUB>2</SUB>,…a<SUB>n</SUB>),采用数组实现,则在等概率的前题下,平均每插入一个元素需要移动的元素个数为多少?若元素插入在a<SUB>i</SUB>与a<SUB>i+1</SUB>之间(<v:shapetype> <v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path connecttype="rect" gradientshapeok="t" extrusionok="f"></v:path><lock aspectratio="t" v:ext="edit"></lock></v:shapetype><v:shape><v:imagedata></v:imagedata></v:shape>)的概率为<v:shape> <v:imagedata></v:imagedata></v:shape>,则平均插入一个元素所要移动的元素个数又是多少?<p></p></P>
<P >2、               用链接方式实现将两个有序表合并成一个有序表;<p></p></P>
<P >3、               试写出在双向链表L中的插入操作算法,算法中插入位置的获取可直接引入getnodep(L,x),其中参数L为双向链表,X为要插入的数据,要求算法中含有双向链表L的结构描述。<p></p></P>
<P >4、               写出和下列递归过程等价的非递归过程。<p></p></P>
<P >Procedure test(var sum:integer);<p></p></P>
<P >Var a:integer;<p></p></P>
<P >Begin<p></p></P>
<P >   Read(a);<p></p></P>
<P >   If a=0 then sum:=1<p></p></P>
<P >Else begin <p></p></P>
<P >Test(sum);<p></p></P>
<P >Sum:=sum*a<p></p></P>
<P >End;<p></p></P>
<P >Write(sum)<p></p></P>
<P >End.<p></p></P>
<P >5.证明:有n个数顺序(依次)进栈,出栈序列的数目为<p></p></P>
<P >        <v:shape><v:imagedata></v:imagedata></v:shape><p></p></P>
<P >6.已知3个字符串分别为s=’ab…abcaabcbca…a’,<p></p></P>
<P >s1=’caaba’,s2=’aca…a’,利用所学字符串基本运算法的函数得到结果串为:s3=’caabcbca…aca…a’。要求写出得到上述结果s所用的函数及执行过程。<p></p></P>
<P >参考解答:1.n/2,(2n+1)/3;<p></p></P>
<P >2.Type pointer=^node ;<p></p></P>
<P >         Node=record<p></p></P>
<P >         Data:datatype;//integer<p></p></P>
<P >         Next:pointer<p></p></P>
<P >End;  <p></p></P>
<P >  Procedure combine(var L1,L2:pointer);<p></p></P>
<P >   Var p,q:pointer;<p></p></P>
<P >Begin<p></p></P>
<P >New(q);<p></p></P>
<P >Q^.next:=nil;<p></p></P>
<P >P=q;<p></p></P>
<P >While (L1&lt;&gt;nil) and (L2&lt;&gt;nil)  do<p></p></P>
<P >   If L1^.data&gt;=L2^.data<p></p></P>
<P >     Then begin<p></p></P>
<P >         P^.next:=L1;<p></p></P>
<P >         P:=p^.next;<p></p></P>
<P >         L1:=L1^.next<p></p></P>
<P >         End<p></p></P>
<P >     Else begin<p></p></P>
<P >         P^.next:=L2;<p></p></P>
<P >         P:=p^.next;<p></p></P>
<P >         L2:=L2^.next<p></p></P>
<P >         End;<p></p></P>
<P >If l1=nil then p^.next:=l2;<p></p></P>
<P >If l2=nil then p^.next:=l1;<p></p></P>
<P >End;<p></p></P>
<P ><p> </p></P>
<P >3.Type link=^node;<p></p></P>
<P >    node=record<p></p></P>
<P >       data:datatype;<p></p></P>
<P >       pre,next:link;<p></p></P>
<P >      end <p></p></P>
<P >procedure insert(var L:link;x:datatype);<p></p></P>
<P >  var p,q:link;<p></p></P>
<P >  begin<p></p></P>
<P >p:=getnodep(l,x);<p></p></P>
<P >new(q);<p></p></P>
<P >q^.data:=x;<p></p></P>
<P >q^.next:=p^.next;<p></p></P>
<P >p^.next:=q;<p></p></P>
<P >q^.next^.pre:=q;<p></p></P>
<P >q^.pre:=p;<p></p></P>
<P >end.<p></p></P>
<P >4.pocedure test;<p></p></P>
<P >var stack:array of integer;<p></p></P>
<P >    top,sum,a:integer;<p></p></P>
<P >begin<p></p></P>
<P >  top:=0;<p></p></P>
<P >  sum:=1;<p></p></P>
<P >  read(a);<p></p></P>
<P >  while a&lt;&gt;0 do<p></p></P>
<P >    begin<p></p></P>
<P >      top:=top+1;<p></p></P>
<P >      stack:=a;<p></p></P>
<P >       read(a);<p></p></P>
<P >    end<p></p></P>
<P >    write(sum);<p></p></P>
<P >   while top&lt;&gt;0 do <p></p></P>
<P >  begin<p></p></P>
<P >    sum:=sum*stack;<p></p></P>
<P >    top:=top-1;<p></p></P>
<P >    write(sum);<p></p></P>
<P >end<p></p></P>
<P >end.<p></p></P>
<P >5.假设对二叉树的N个结点1到N加以编号,且令其前序序列为1,2,…,N,则不同的二叉树所得的中序序列不同,因此,不同形态的二叉树的数目恰好是前序序列均为1,2,…N的二叉树所能得到的中序序列的数目,而中序遍历的过程实质上是一个结点进栈和出栈的过程。<p></p></P>
<P >6.i1=index(1,s,s1)<p></p></P>
<P >   i2=index(1,s,s2)<p></p></P>
<P >   s4=substr(s,i1,length(s)-i1+1)<p></p></P>
<P >   s5=substr(s,i2,length(s)-i2+1)<p></p></P>
<P >   s3=concat(s4,s5)<p></p></P>
<P ><p> </p></P>
<P ><p> </p></P>
<P  align=center>第二讲  树<p></p></P>
<P >一、    树、二叉树的基本概念<p></p></P>
<P >*树与二叉树的区别<p></p></P>
<P >*二叉树的性质<p></p></P>
<P >*二叉树的计数B<SUB>n</SUB>=<v:shape> <v:imagedata></v:imagedata></v:shape><p></p></P>
<P >*近似满二叉树与满二叉树的概念和性质<p></p></P>
<P >思考题:叶子数为124的近似满二叉树的结点数为多少?<p></p></P>
<P ><p> </p></P>
<P >二、    会将表达式改写成前缀和后缀表达式<p></p></P>
<P >会画前缀和后缀表达式对应的二叉树<p></p></P>
<P >三、    树的表示(父亲数组表示法、儿子链表表示法、左儿子右兄弟表示法)<p></p></P>
<P >四、    树的遍历(递归与非递归算法)及基本运算<p></p></P>
<P >五、    二叉树的实现(顺序存储实现与链式存储实现)<p></p></P>
<P >六、    森林与二叉树的转换<p></p></P>
<P >七、    二叉树的线索化的作用、会画线索链表及相关的操作算法(例中序遍历算法、寻找前驱结点和后继结点算法等)<p></p></P>
<P >八、    习题 <p></p></P>
<P >1、   写出中缀表达式A-(B+C/D)*E的后缀形式。<p></p></P>
<P >2、   高为H的二叉树只有度为0和2的结点,则此类二叉树的结点数至少为多少?至多为多少?<p></p></P>
<P >3、   已知某字符串中共有8种字符,各种字符分别出现2次、1次、4次、5次、7次、3次、4次和9次,对该字符串用{0,1}进行前缀编码,问该字符串的编码至少有多少位?<p></p></P>
<P >4、   已知深度为H的二叉树以一数组A作为其存储结构。请写一算法,求该二叉树中叶子节点的个数。<p></p></P>
<P >5、   已知一棵二叉树的先序遍历序列和中序遍历序列,写出可以唯一确定一棵二叉树的算法。<p></p></P>
<P >九、    证明<p></p></P>
<P >1、   任一棵有n个结点的二叉树,已知它有m个叶子结点。证明:度为2的结点有m-1个,其他结点是度为1的结点。<p></p></P>
<P ><p> </p></P>
<P >解答:<p></p></P>
<P >1、   ABCD/+E*-<p></p></P>
<P >2、   2H-1,2<SUP>H</SUP>-1<p></p></P>
<P >3、   98<p></p></P>
<P >4、   function leafcount(A,H):integer;<p></p></P>
<P >var I,len,count:integer;<p></p></P>
<P >begin<p></p></P>
<P >    len:=2^H-1;<p></p></P>
<P >    count:=0;<p></p></P>
<P >    for I:=1 to len do <p></p></P>
<P >      if A&lt;&gt;0 then <p></p></P>
<P >       if I*2&gt;len then count:=count+1<p></p></P>
<P >           else if a=0 and A=0 then<p></p></P>
<P >             count:=count+1;<p></p></P>
<P >   return(count);<p></p></P>
<P >end<p></p></P>
<P >5、   算法思想:可以依次从先序遍历中取出结点,每取出一个结点就与中序遍历序列中的各结点进行比较,当相等时,中序遍历序列就分成以该结点为根的两棵子树,左部分为左子树,右部分为右子树,直到取完先序遍历序列中的所有结点,则该二叉树构造完毕。可以用一个数组A存放先序遍历序列,A中的元素类型为字符类型,用数组B存放中序遍历序列,B中的元素类型为一个记录,包含lchild,rchild,ch三个域,其类型分别为整型和字符型,同时利用一个类型为stack的栈S。<p></p></P>
<P >Procedure binatree(A,B);<p></p></P>
<P >Var<p></p></P>
<P >   A:array of char;<p></p></P>
<P >   Node=record<p></p></P>
<P >     Lchild,rchild:integer;<p></p></P>
<P >     Ch:char<p></p></P>
<P >   End;<p></p></P>
<P >   B:array of node;<p></p></P>
<P >   I,j,k:integer;<p></p></P>
<P >S:stack;<p></p></P>
<P >Begin<p></p></P>
<P >S^.top:=0;<p></p></P>
<P >For I:=1 to n do<p></p></P>
<P > Begin<p></p></P>
<P >    J:=1;<p></p></P>
<P >   While B.ch&lt;&gt;A do<p></p></P>
<P >    J:=j+1;<p></p></P>
<P >   If s^.top=0 then<p></p></P>
<P >      Begin<p></p></P>
<P >        S^.top:=s^.top+1;<p></p></P>
<P >        S^.data:=j;//入栈<p></p></P>
<P >      End<p></p></P>
<P >   Else//建立左子树<p></p></P>
<P >      If (j&lt;s^.data) then<p></p></P>
<P >       Begin<p></p></P>
<P >          B].lchild:=j;<p></p></P>
<P >          S^.top:=s^.top+1;<p></p></P>
<P >          S^.data:=j<p></p></P>
<P >       End<p></p></P>
<P >   Else<p></p></P>
<P >     Begin<p></p></P>
<P >      While ((j&gt;s^.data) and (s^.top&lt;&gt;0) do<p></p></P>
<P >          Begin<p></p></P>
<P >             K:=s^.data;<p></p></P>
<P >             S^.top:=s^.top-1;<p></p></P>
<P >          End<p></p></P>
<P >          B.rchild:=j;<p></p></P>
<P >          S^.top:=s^.top+1;<p></p></P>
<P >          S^.data:=j<p></p></P>
<P >      End<p></p></P>
<P >   End<p></p></P>
<P >End;<p></p></P>
<P ><p> </p></P>
<P >证明题<p></p></P>
<P >1、   设二叉树中度为1和2的结点数为n1和n2,总的结点数为n,则<p></p></P>
<P >     n=n1+n2+m                          (1)<p></p></P>
<P >   再由二叉树中的分支数得知:除根结点之外,其余结点都有一个分支进入,设B为分支数,<p></p></P>
<P >则有:n=B+1               (2)<p></p></P>
<P >而B又可以由度为1的结点数与度为2的结点数得:<p></p></P>
<P >         B=1*n1+2*n2                    (3)<p></p></P>
<P >从而由(1)、(2)、(3)得n2=m-1<p></p></P>
<P >十、思考题<p></p></P>
<P >1、               若一个具有N个顶点,K条边的无向图是一个森林(N&gt;K),则该森林中含有多少棵树?<p></p></P>
<P >2、               假设先序遍历某棵树的结点序列为SACEFBDGHIJK,后序遍历该棵的结点序列为CFEABHGIKJDS,要求画出这棵树。<p></p></P>
<P >3、               简述后序线索树的不足之处。<p></p></P>
<P >4、               如果两棵二叉树的结构相同,并且结点中的数值相等,则称这两棵二叉树相等。试设计一算法用于判断两二叉树是否相等。<p></p></P>
<P >5、               教材第四章习题4-8和4-9;<p></p></P>
<P >参考答案:<p></p></P>
<P >1、设森林中有M棵树,每棵树具有的顶点数为 <v:shape><v:imagedata></v:imagedata></v:shape>,则<v:shape> <v:imagedata></v:imagedata></v:shape>,<p></p></P>
<P ><v:shape><v:imagedata></v:imagedata></v:shape>,从而得M=N-K<p></p></P>
<P ><p> </p></P>
<P >4、Type nodeptr=^node;<p></p></P>
<P >node=record<p></p></P>
<P >infchar;<p></p></P>
<P >left,right:nodeptr;<p></p></P>
<P >end;<p></p></P>
<P >element=record<p></p></P>
<P >t1:nodeptr;<p></p></P>
<P >t2:nodeptr;<p></p></P>
<P >end;<p></p></P>
<P >function equal(p,q:nodeptr):Boolean;<p></p></P>
<P >   var ok,sempty:Boolean;<p></p></P>
<P >x:element;<p></p></P>
<P >begin<p></p></P>
<P >makenull(s);<p></p></P>
<P >ok:=true;<p></p></P>
<P >repeat<p></p></P>
<P >   while (p&lt;&gt;nil) and (q&lt;&gt;nil) and ok do<p></p></P>
<P >    if p^.info=q^.info then<p></p></P>
<P >       begin<p></p></P>
<P >         X.t1:=p;<p></p></P>
<P >         x.t2:=q;<p></p></P>
<P >         push(s,x);<p></p></P>
<P >         p:=p^.left;<p></p></P>
<P >         q:=q^.left<p></p></P>
<P >       end<p></p></P>
<P >      else ok:=false;<p></p></P>
<P >if p&lt;&gt;nil or q&lt;&gt;nil then ok:=false;<p></p></P>
<P >sempty:=empty(s);<p></p></P>
<P >if ok and not empty then<p></p></P>
<P >   begin<p></p></P>
<P >     pop(s,x);<p></p></P>
<P >      p:=x.t1;<p></p></P>
<P >      q:=x.t2;<p></p></P>
<P >      p:=p^.right;<p></p></P>
<P >      q:=q^.right;<p></p></P>
<P >end <p></p></P>
<P >until not ok  or sempty;<p></p></P>
<P >if not empty(s) then makenull(s);<p></p></P>
<P >equal:=ok;<p></p></P>
<P >end;<p></p></P>
<P ><p> </p></P>
<P  align=center>第三讲  图<p></p></P>
<P >一、    图的基本概念<p></p></P>
<P >*G=(V,E),集合V,E的基本要求<p></p></P>
<P >*完全图的边和顶点的关系(有向图和无向图)<p></p></P>
<P >*顶点度的计算(有向图和无向图)<p></p></P>
<P >*顶点数、边与顶点度的关系<v:shape> <v:imagedata></v:imagedata></v:shape><p></p></P>
<P >上式表明任意一个图其所有顶点的度之和为偶数<p></p></P>
<P >*图的子图的计数<p></p></P>
<P >*图的路径和连通性概念(有向图和无向图)<p></p></P>
<P >*最小生成树的定义<p></p></P>
<P >*回路的概念<p></p></P>
<P >二、    图的表示及其应用<p></p></P>
<P >*邻接矩阵表示法(邻接矩阵与边数的关系)<p></p></P>
<P >*邻接表表示法(邻接表与边数的关系、逆邻接表及建立邻接表的算法)<p></p></P>
<P >三、    图的遍历<p></p></P>
<P >*图的深度优先遍历(DFS算法思想及算法时间复杂性)<p></p></P>
<P >(利用DFS算法思想设计相关的算法)<p></p></P>
<P >*图的广度优先遍历(BFS算法思想及算法时间复杂性)<p></p></P>
<P >四、    最少生成树<p></p></P>
<P >*Prim算法的实例执行过程、时间复杂性及适用场所<p></p></P>
<P >*Kruskal算法的实例执行过程、时间复杂性及适用场所<p></p></P>
<P >五、    最短路径<p></p></P>
<P >*Dijkstra算法的实例执行过程<p></p></P>
<P >*Floyd算法的实例执行过程及应用<p></p></P>
<P >六、    习题<p></p></P>
<P >1、   求有向图的强连通分量(极大连通子图)<p></p></P>
<P >2、   判断一个图是否有回路的方法。<p></p></P>
<P >解答:(拓朴排序即在拓朴排序中若输出之后余下的顶点均有前驱;计算G的边数e,若e≥n,则可判定G中是否有回路;计算G的顶点度D,若D≥2,则G中必有回路)。<p></p></P>
<P >3、   假设以邻接矩阵作为图的存储结构,编写算法判别在给定的有向图中是否存在一个简单有向回路。若存在,则以顶点序列的方式输出该回路。//dfs算法的应用<p></p></P>
<P >解答:procedure findcircle;<p></p></P>
<P >var v:integer;<p></p></P>
<P >begin<p></p></P>
<P >   for v:=1 to n do visited:=false;<p></p></P>
<P >   p:=0;<p></p></P>
<P >   found:=false;<p></p></P>
<P >   for v:=1 to n do dfs(v);<p></p></P>
<P >end;<p></p></P>
<P >procedure dfs(v:integer);<p></p></P>
<P >begin<p></p></P>
<P >    if found then return;<p></p></P>
<P >    p:=p+1;<p></p></P>
<P >     vex:=v;<p></p></P>
<P >    if visited then begin<p></p></P>
<P >     found:=true;<p></p></P>
<P >     display();<p></p></P>
<P >      end<p></p></P>
<P >else  begin<p></p></P>
<P >    visited:=true;<p></p></P>
<P >     for I:=1 to n do<p></p></P>
<P >        if matrix&gt;0 then dfs(i);<p></p></P>
<P >     end;<p></p></P>
<P >p:=p-1;<p></p></P>
<P >visited:=false;<p></p></P>
<P >end;<p></p></P>
<P >4、   给定图的存储结构,写出从某点出发的深度优先遍历和深度优先遍历序列。<p></p></P>
<P >5、   给定N个村庄之间的交通图,若村庄I和村庄J之间有道路,则将顶点I和顶点J用边连结,边上的权W(I,J)表示这条道路的长度。现在要从这N个村庄中选择一个村庄建一所医院,问这所医院应建在哪个村庄,才能使离医院最远的村庄到医院的路程最短?试设计一个算法解决上述问题。<p></p></P>
<P > 解答:算法思想:建立图的邻接矩阵;用FLOYD算法计算每对顶点间的最短路径;找出从每一顶点出发到其余各顶点的最短路径中最长的路径;在这N条最长路径中找出最短的一条,则它的出发点即为所求。<p></p></P>
<P >Procedure example(n:integer; C:cost;var A:cost);<p></p></P>
<P >Begin//计算每对顶点间最短路径<p></p></P>
<P >For I:=1 to N do <p></p></P>
<P >  For j:=1 to N do <p></p></P>
<P >A:=c;<p></p></P>
<P >For k:=1 to n do <p></p></P>
<P >    For I:=1 to n do<p></p></P>
<P >    For j:=1 to n do<p></p></P>
<P >      If a:+a&lt;a<p></p></P>
<P >           Then a:=a+a;<p></p></P>
<P >K:=1;<p></p></P>
<P >M:=maxint;<p></p></P>
<P >For j:=1 to N do <p></p></P>
<P >    Begin<p></p></P>
<P >      S:=0;<p></p></P>
<P >      For j:=1 to N do <p></p></P>
<P >    If a&gt;s then s:=a;<p></p></P>
<P >      If s&lt;m then begin<p></p></P>
<P >        M:=s;k:=I<p></p></P>
<P >           End<p></p></P>
<P >    End<p></p></P>
<P >End;<p></p></P>
<P >6、   证明:设G为具有n个顶点的无向连通图,证明所有具有n-1条边n个顶点的无向连通图是树图。<p></p></P>
<P >解答:(反证法)设G是连通的但不是树图,则G中必有回路,因而我们至少可以从某个回路中去掉某一条边且仍然保证G是连通的,则G将变成含有n个顶点且最多只有n-2条连的连通图,这显然是错误的,这与G为具有n个顶点的无向连通图,则G至少有n-1条边结论相矛盾。(归纳法)<p></p></P>
<P >7、   对于n个顶点的无向图,采用邻接矩阵表示,回答下列有关问题:<p></p></P>
<P >(1)     图中有多少条边?<p></p></P>
<P >(2)     任意两个顶点I和j是否有边相连?<p></p></P>
<P >(3)     任意一个顶点的度是多少?<p></p></P>
<P ><p> </p></P>
<P >解答:(1)图中边数等于邻接矩阵的非零元素个数之和的一半(2)I,j间有边相连的条件是A&lt;&gt;0,且A&lt;&gt;0(3)顶点i的度为第i行中非零元素的个数.<p></p></P>
<P ><p> </p></P>
<P  align=center>第四讲  集合(1)<p></p></P>
<P >一、    基本概念<p></p></P>
<P >*字典(有序字典)<p></p></P>
<P >*优先队列<p></p></P>
<P >*并查集<p></p></P>
<P >*平衡树<p></p></P>
<P >*二叉搜索树<p></p></P>
<P >*堆树(优先级树)<p></p></P>
<P >二、    字典实现<p></p></P>
<P >*字典的数组实现与表的数组实现的异同点。<p></p></P>
<P >*字典的散列表实现(开散列表和闭散列表)<p></p></P>
<P >*开散列表实现的基本思想及其运算<p></p></P>
<P >*闭散列表实现的基本思想及其运算(线性重新散列技术与二次散列技术)<p></p></P>
<P >三、    有序字典实现<p></p></P>
<P >*有序字典的数组实现(二分搜索):算法、时间复杂性及实例执行过程<p></p></P>
<P >*有序字典的二叉搜索树实现(MEMBER及INSERT算法)<p></p></P>
<P >四、    优先队列<p></p></P>
<P >*优先队列与队列的区别<p></p></P>
<P >*优先队列基本运算<p></p></P>
<P >*堆的数组实现<p></p></P>
<P >五、    平衡树(AVL树)<p></p></P>
<P >*引入AVL树的意义及查找时间分析<p></p></P>
<P >*建AVL树的实例实行过程<p></p></P>
<P >*LL、LR、RR、RL型平衡旋转的指针修改操作<p></p></P>
<P >*B-树的定义(2-3树)及具体实例执行插入与删除过程<p></p></P>
<P >六、    习题<p></p></P>
<P >1、已知序列17,31,13,11,20,35,25,8,4,11,24,40,27,请画出该序列的二叉搜索树,并分别给出下列操作后的二叉树:<p></p></P>
<P >(1) 插入数据9;<p></p></P>
<P >(2) 删除结点17;<p></p></P>
<P >(3) 再删除结点13<p></p></P>
<P >2、假设有N个关键字互为同义词,若用线性探测法把N个关键字存入散列表中,至少要进行多少次探测?<p></p></P>
<P >解:N*(N+1)/2<p></p></P>
<P >3、对于给定AVL树,依次插入关键字为6和10的两个结点,请分别画出依次插入后的AVL树。<p></p></P>
<P >4、已知一棵3阶B-树如图,<p></p></P>
<P >(1) 画出插入18的3阶B-树;<p></p></P>
<P >(2) 画出在插入18后的3阶B-树中删除78后的3阶B-树。<p></p></P>
<P >5、设二叉搜索树的存储结构为:<p></p></P>
<P >type tree=^node;<p></p></P>
<P >node=record<p></p></P>
<P >key:keytype;<p></p></P>
<P >size:integer;<p></p></P>
<P >lchild,rchild,parent:tree;<p></p></P>
<P >end;<p></p></P>
<P >  一个结点X^的size域的值是以该结点为根的子树中的总数(包括X^本身),例如,图示中X^所指结点的size值为4。设树高为H,试写一时间为O(H)的算法RANK(T:TREE;X:NODE),求X所指结点是树T中的第几个最小元素。(例X所指结点是树T中第11个最小元素)<p></p></P>
<P >解答:<p></p></P>
<P >function rank(t:tree;x:^node):integer;<p></p></P>
<P >begin<p></p></P>
<P >if x^.lchild=nil then r:=1<p></p></P>
<P >else r:=x^.lchild^.size+1;<p></p></P>
<P >y:=x;<p></p></P>
<P >while y&lt;&gt;t do<p></p></P>
<P >begin<p></p></P>
<P >if y=y^.parent^.rchild then<p></p></P>
<P >if y^.parent^.lchild=nil then r:=r+1<p></p></P>
<P >                else r:=r+y^.parent^.lchild^.size+1;<p></p></P>
<P >y:=y^.parent;<p></p></P>
<P >end;<p></p></P>
<P >end<p></p></P>
<P >6、设散列表表长m=4,散列函数为h(k)=k mod 11,表中已有4个记录,如果用二次探测再散列技术处理冲突,关键字为49的记录的存储地址是多少?<p></p></P>
<P >0    1    2    3    4    5    6     7    8    9    10   11   12   13<p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P >15<p></p></P></TD>
<TD  vAlign=top width=41>
<P >38<p></p></P></TD>
<TD  vAlign=top width=41>
<P >61<p></p></P></TD>
<TD  vAlign=top width=41>
<P >84<p></p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD></TR></TABLE>
<P >解答:<p></p></P>
<P >散列函数序列为:h(x),h<SUB>1</SUB>(x),h<SUB>2</SUB>(x),…,h<SUB>2I-1</SUB>(x),h<SUB>2i</SUB>(x),….<p></p></P>
<P >   h<SUB>2I-1</SUB>(x)=( h(x)+i<SUP>2</SUP>) mod B<p></p></P>
<P >   h<SUB>2i</SUB>(x)= ( h(x)-i<SUP>2</SUP>) mod B            (1≤i≤(B-1)/2)<p></p></P>
<P >   h(49)=5, h<SUB>1</SUB>(x)=6,h<SUB>2</SUB>(x)=4, h<SUB>3</SUB>(x)=9<p></p></P>
<P ><p> </p></P>
<P  align=center>第四讲 排序与选择(2)<p></p></P>
<P ><p> </p></P>
<P >一、    快速排序算法<p></p></P>
<P >*快速排序算法的基本思想<p></p></P>
<P >*快速排序算法(PARTION)及其算例执行过程<p></p></P>
<P >二、    堆排序算法<p></p></P>
<P >*堆排序算法的基本思想<p></p></P>
<P >*堆排序算法及算例<p></p></P>
<P >三、    计数排序、桶排序和基数排序的算法思想<p></p></P>
<P >四、    中位数的概念及寻找中位数的算法思想<p></p></P>
<P >五、习题讲解说<p></p></P>
<P >1、     对键值集合,{72,73,71,23,94,16,05,68}对应的二叉树进行建堆。<p></p></P>
<P >2、   已知关键字序列(K<SUB>1</SUB>,K<SUB>2</SUB>,…,k<SUB>n-1</SUB>)已是堆,试写一算法将(K<SUB>1</SUB>,K<SUB>2</SUB>,…,k<SUB>n-1</SUB>,Kn)调整为堆。<p></p></P>
<P >**例子<p></p></P>
<P >1、   设散列表表长m=4,散列函数为h(k)=k mod 11,表中已有4个记录,如果用二次探测再散列技术处理冲突,关键字为49的记录的存储地址是多少?<p></p></P>
<P >0    1    2    3    4    5    6     7    8    9    10   11   12   13<p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P >15<p></p></P></TD>
<TD  vAlign=top width=41>
<P >38<p></p></P></TD>
<TD  vAlign=top width=41>
<P >61<p></p></P></TD>
<TD  vAlign=top width=41>
<P >84<p></p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD>
<TD  vAlign=top width=41>
<P ><p> </p></P></TD></TR></TABLE>
<P ><p> </p></P>
<P >2设有一组关键字(17,13,14,153,29,35),需插入到表长为12的散列表中,请回答以下问题:<p></p></P>
<P >(1)     设计一个合适该散列表的散列函数;<p></p></P>
<P >(2)     用设计的散列函数将上述关键字插入到散列表中,画出其结构,并指出用线探测解决冲突时构造散列表的加载因子为多少?<p></p></P>
<P >3、对键值集合,{72,73,71,23,94,16,05,68}对应的二叉树进行建堆。<p></p></P>
<P >4、计数排序算法<p></p></P>
<P >解答<p></p></P>
<P >1、   散列函数序列为:h(x),h<SUB>1</SUB>(x),h<SUB>2</SUB>(x),…,h<SUB>2I-1</SUB>(x),h<SUB>2i</SUB>(x),….<p></p></P>
<P >   h<SUB>2I-1</SUB>(x)=( h(x)+i<SUP>2</SUP>) mod B<p></p></P>
<P >   h<SUB>2i</SUB>(x)= ( h(x)-i<SUP>2</SUP>) mod B            (1≤i≤(B-1)/2)<p></p></P>
<P >   h(49)=5, h<SUB>1</SUB>(x)=6,h<SUB>2</SUB>(x)=4, h<SUB>3</SUB>(x)=9<p></p></P>
<P >2、(1)由于散列表表长为12,则可选不超过表长的最大素数11作为除留余数法的模,则可得其散列函数为h(k)=k mod 11.<p></p></P>
<P >  (2)若用线性探测法解决冲突,则可构造出散列表如下:<p></p></P>
<P >        0    1    2     3     4     5     6    7     8      9    10<p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=47>
<P ><p> </p></P></TD>
<TD  vAlign=top width=47>
<P ><p> </p></P></TD>
<TD  vAlign=top width=47>
<P ><p> </p></P></TD>
<TD  vAlign=top width=47>
<P >13<p></p></P></TD>
<TD  vAlign=top width=47>
<P >14<p></p></P></TD>
<TD  vAlign=top width=47>
<P >35<p></p></P></TD>
<TD  vAlign=top width=47>
<P ><p> </p></P></TD>
<TD  vAlign=top width=47>
<P >17<p></p></P></TD>
<TD  vAlign=top width=47>
<P >29<p></p></P></TD>
<TD  vAlign=top width=47>
<P ><p> </p></P></TD>
<TD  vAlign=top width=47>
<P ><p> </p></P></TD>
<TD  vAlign=top width=47>
<P ><p> </p></P></TD></TR></TABLE>
<P > 此时,其加载因子为α=6/12=0.5<p></p></P>
<P >4、算法思想:对给定的输入序列中的每一个元素x,确定该序列中的键值小于x的元素的个数。本算法的关键问题是要确定序列中元素的上界m.<p></p></P>
<P >数据结构:A,B,C为数组,分别存放输入、输出的数据元素和元素的计数。<p></p></P>
<P >   procedure count_sort(var a,b:array of recordtype);<p></p></P>
<P >var I,j:integer;<p></p></P>
<P >    c:array of integer;<p></p></P>
<P >   begin <p></p></P>
<P >      for I:=1 to m do c:=0;<p></p></P>
<P >      for j:=1 to n do c.key]:=C.key]+1;<p></p></P>
<P >      for I:=1 to m do c:=c+c;<p></p></P>
<P >      for j:=n downto 1 do<p></p></P>
<P >          begin<p></p></P>
<P >             B.key]]:=A;<p></p></P>
<P >             C.key]:=c.key]-1<p></p></P>
<P >          End<p></p></P>
<P >   End<p></p></P>
<P >A<p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=24>
<P >3<p></p></P></TD>
<TD  vAlign=top width=24>
<P >6<p></p></P></TD>
<TD  vAlign=top width=24>
<P >4<p></p></P></TD>
<TD  vAlign=top width=24>
<P >1<p></p></P></TD>
<TD  vAlign=top width=24>
<P >3<p></p></P></TD>
<TD  vAlign=top width=24>
<P >4<p></p></P></TD>
<TD  vAlign=top width=24>
<P >1<p></p></P></TD>
<TD  vAlign=top width=24>
<P >4<p></p></P></TD></TR></TABLE>
<P ><p> </p></P>
<P >C  1 2  3 4  5  6<p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=20>
<P >2<p></p></P></TD>
<TD  vAlign=top width=24>
<P >0<p></p></P></TD>
<TD  vAlign=top width=16>
<P >2<p></p></P></TD>
<TD  vAlign=top width=20>
<P >3<p></p></P></TD>
<TD  vAlign=top width=24>
<P >0<p></p></P></TD>
<TD  vAlign=top width=28>
<P >1<p></p></P></TD></TR></TABLE>
<P ><p> </p></P>
<P >C  1 2  3 4  5  6<p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=20>
<P >2<p></p></P></TD>
<TD  vAlign=top width=24>
<P >2<p></p></P></TD>
<TD  vAlign=top width=16>
<P >4<p></p></P></TD>
<TD  vAlign=top width=20>
<P >7<p></p></P></TD>
<TD  vAlign=top width=24>
<P >7<p></p></P></TD>
<TD  vAlign=top width=28>
<P >8<p></p></P></TD></TR></TABLE>
<P ><p> </p></P>
<P >B  1  2  3  4  5  6  7  8<p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=24>
<P ><p> </p></P></TD>
<TD  vAlign=top width=24>
<P ><p> </p></P></TD>
<TD  vAlign=top width=24>
<P ><p> </p></P></TD>
<TD  vAlign=top width=24>
<P ><p> </p></P></TD>
<TD  vAlign=top width=24>
<P ><p> </p></P></TD>
<TD  vAlign=top width=24>
<P ><p> </p></P></TD>
<TD  vAlign=top width=24>
<P >4<p></p></P></TD>
<TD  vAlign=top width=24>
<P ><p> </p></P></TD></TR></TABLE>
<P >//比4小的数有7个//<p></p></P>
<P ><p> </p></P>
<P >C  1 2  3 4  5  6<p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=20>
<P >2<p></p></P></TD>
<TD  vAlign=top width=24>
<P >2<p></p></P></TD>
<TD  vAlign=top width=16>
<P >4<p></p></P></TD>
<TD  vAlign=top width=24>
<P >6<p></p></P></TD>
<TD  vAlign=top width=24>
<P >7<p></p></P></TD>
<TD  vAlign=top width=36>
<P >8<p></p></P></TD></TR></TABLE>
<P ><p> </p></P>
<P >B  1  2  3  4  5  6  7  8<p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=24>
<P ><p> </p></P></TD>
<TD  vAlign=top width=24>
<P >1<p></p></P></TD>
<TD  vAlign=top width=24>
<P ><p> </p></P></TD>
<TD  vAlign=top width=24>
<P ><p> </p></P></TD>
<TD  vAlign=top width=24>
<P ><p> </p></P></TD>
<TD  vAlign=top width=24>
<P ><p> </p></P></TD>
<TD  vAlign=top width=24>
<P >4<p></p></P></TD>
<TD  vAlign=top width=24>
<P ><p> </p></P></TD></TR></TABLE>
<P >//比1小的数有2个//<p></p></P>
<P ><p> </p></P>
<P >C  1 2  3 4  5  6<p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=24>
<P >1<p></p></P></TD>
<TD  vAlign=top width=20>
<P >2<p></p></P></TD>
<TD  vAlign=top width=16>
<P >4<p></p></P></TD>
<TD  vAlign=top width=24>
<P >6<p></p></P></TD>
<TD  vAlign=top width=24>
<P >7<p></p></P></TD>
<TD  vAlign=top width=36>
<P >8<p></p></P></TD></TR></TABLE>
<P ><p> </p></P>
<P >B  1  2  3  4  5  6  7  8<p></p></P>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR >
<TD  vAlign=top width=24>
<P >1<p></p></P></TD>
<TD  vAlign=top width=24>
<P >1<p></p></P></TD>
<TD  vAlign=top width=24>
<P >3<p></p></P></TD>
<TD  vAlign=top width=24>
<P >3<p></p></P></TD>
<TD  vAlign=top width=24>
<P >4<p></p></P></TD>
<TD  vAlign=top width=24>
<P >4<p></p></P></TD>
<TD  vAlign=top width=24>
<P >4<p></p></P></TD>
<TD  vAlign=top width=24>
<P >6<p></p></P></TD></TR></TABLE>
<P ><p> </p></P>
<P >算法时间为O(n+m),当m=O(n), 算法时间为O(n),线性时间<p></p></P>
<P ><p> </p></P>
<P ><p> </p></P>
<P ><p> </p></P>
<P ><p> </p></P>
<P  align=center><p> </p></P>
<P  align=center>陈国龙<p></p></P>
<P  align=center>7893219(O),<a href="mailtcgl@fzu.edu.cn" target="_blank" >cgl@fzu.edu.cn</A>;<p></p></P>
<P  align=center><a href="mailtcglh@pub3.fz.fj.cn" target="_blank" >cglh@pub3.fz.fj.cn</A><p></p></P>
<P  align=center>3223179(小灵通)<p></p></P>

lynnyan 发表于 2005-4-22 01:19

搞那么多白痴呀

欣然 发表于 2005-11-19 15:57

bayern 发表于 2010-7-23 19:07

~~~~~~~~~~~~~~~~~~~

欢殇一笑 发表于 2013-11-6 18:32

咋是这样啊

暗夜№☆修罗 发表于 2013-11-20 12:45

有值得一看的理由。。。。。。。。。。。

warriorIverson 发表于 2014-1-18 09:16

好贴啊。必须收藏

空木葬花 发表于 2014-3-12 16:35

非常感谢楼主的福利!

wy617958197 发表于 2014-8-31 10:23

谢谢楼主分享

pen960223 发表于 2016-7-30 21:27

{:3_41:}{:3_41:}{:3_41:}{:3_41:}
页: [1] 2
查看完整版本: [分享]2002年《算法与数据结构》复习