⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xtjd3.htm

📁 严蔚民版的数据结构的完整课件
💻 HTM
📖 第 1 页 / 共 3 页
字号:
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">}</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"> </P>
<P align=left 
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">Status   
DeCQueue(CLinkQueue &cq, CQElemType &e){</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
//若队列不空,则删除cq的队头元素,用e返回其值</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
//并返回OK,否则返回ERROR</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
if (cq.rear=cq.rear->next) return ERROR;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
p=cq.erar->next->next;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
e=p->data;&nbsp; cq.rear->next->next=p->next;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
if (cq.rear==p) cq.rear=cq.rear->next;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
free(p);&nbsp; return OK;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">}</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"> </P>
<P align=left 
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">3.30</font></P>
<P align=left 
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">#define   
MAXSIZE&nbsp; 100;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">typedef   
struct {</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
QElemType&nbsp; *base;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rear;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">}SqQueue;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"> </P>
<P align=left 
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">Status   
EnQueue(SqQueue &q, QElemType e){</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
//插入元素e为q的新的队尾元素</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
if (q.length==MAXSIZE) return ERROR;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
q.base[q.rear]=e;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
q.rear=(q.rear+1)%MEXSIZE;&nbsp;&nbsp;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
return OK;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">}</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"> </P>
<P align=left 
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">Status   
DeQueue(sQQueue &q, QElemType &e){</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
//若队列不空,则删除q的队头元素,用e返回其值</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
//并返回OK,否则返回ERROR</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
if (q.length==0) return ERROR;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
e=q.base[(q.rear-q.length+MEXSIZE)%MAXSIZE];</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
q.length--;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
return OK;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">}</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"> </P>
<P align=left 
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">3.31</font></P>
<P align=left 
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">Status 
ReturnText(){</font></P>
<P align=left 
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
//判断读入的一个以‘@’为结束符的字符序列是否为回文</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
InitStack(s);&nbsp; InitQueue(q); c=getchar();</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
while (c!='@'){</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;&nbsp;&nbsp;   
Push(s,c);&nbsp; EnQueue(q,c);</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;&nbsp;&nbsp;   
c=getchar();</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
}</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
while (!EmptyStack(s)){</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;&nbsp;&nbsp;   
Pop(s,x); DeQueue(q,y);</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;&nbsp;&nbsp;   
if (x!=y) return FALSE;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
}</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
return TRUE;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">}</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"> </P>
<font color="#0000FF">(以下内容来自http://bbs.kaoyan.com)</font>
<p>第三章 栈与队列</p>
<p>3.15
<p>typedef struct{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Elemtype 
*base;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Elemtype 
*top;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}BDStacktype; 
//双向栈类型
<p>Status Init_Stack(BDStacktype &tws,int m)//初始化一个大小为m的双向栈tws<br>
{<br>
&nbsp;&nbsp;tws.base[ 0 ]=(Elemtype*)malloc(sizeof(Elemtype));<br>
&nbsp;&nbsp;tws.base=tws.base[ 0 ]+m;<br>
&nbsp;&nbsp;tws.top[ 0 ]=tws.base[ 0 ];<br>
&nbsp;&nbsp;tws.top=tws.base;<br>
&nbsp;&nbsp;return OK;<br>
}//Init_Stack
<p>Status push(BDStacktype &tws,int i,Elemtype x)//x入栈,i=0表示低端栈,i=1表示高端栈<br>
{<br>
&nbsp;&nbsp;if(tws.top[ 0 ]>tws.top) return OVERFLOW; //注意此时的栈满条件<br>
&nbsp;&nbsp;if(i==0) *tws.top[ 0 ]++=x;<br>
&nbsp;&nbsp;else if(i==1) *tws.top--=x;<br>
&nbsp;&nbsp;else return ERROR;<br>
&nbsp;&nbsp;return OK;<br>
}//push
<p>Status pop(BDStacktype &tws,int i,Elemtype &x)//x出栈,i=0表示低端栈,i=1表示高端栈<br>
{<br>
&nbsp;&nbsp;if(i==0)<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(tws.top[ 0 ]==tws.base[ 0 ]) return OVERFLOW;<br>
&nbsp;&nbsp;&nbsp;&nbsp;x=*--tws.top[ 0 ];<br>
&nbsp;&nbsp;}<br>
&nbsp;&nbsp;else if(i==1)<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(tws.top==tws.base) return OVERFLOW;<br>
&nbsp;&nbsp;&nbsp;&nbsp;x=*++tws.top;<br>
&nbsp;&nbsp;}<br>
&nbsp;&nbsp;else return ERROR;<br>
&nbsp;&nbsp;return OK;<br>
}//pop
<p>3.16
<p>void Train_arrange(char *train)//这里用字符串train表示火车,'H'表示硬席,'S'表示软席<br>
{<br>
&nbsp;&nbsp;p=train;q=train;<br>
&nbsp;&nbsp;InitStack(s);<br>
&nbsp;&nbsp;while(*p)<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(*p=='H') push(s,*p); //把'H'存入栈中<br>
&nbsp;&nbsp;&nbsp;&nbsp;else *(q++)=*p; //把'S'调到前部<br>
&nbsp;&nbsp;&nbsp;&nbsp;p++;<br>
&nbsp;&nbsp;}<br>
&nbsp;&nbsp;while(!StackEmpty(s))<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;pop(s,c);<br>
&nbsp;&nbsp;&nbsp;&nbsp;*(q++)=c; //把'H'接在后部<br>
&nbsp;&nbsp;}<br>
}//Train_arrange
<p>3.17
<p>int IsReverse()//判断输入的字符串中'&'前和'&'后部分是否为逆串,是则返回1,否则返回0<br>
{<br>
&nbsp;&nbsp;InitStack(s);<br>
&nbsp;&nbsp;while((e=getchar())!='&')<br>
&nbsp;&nbsp;&nbsp;&nbsp;push(s,e);<br>
&nbsp;&nbsp;while((e=getchar())!='@')<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(StackEmpty(s)) return 0;<br>
&nbsp;&nbsp;&nbsp;&nbsp;pop(s,c);<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(e!=c) return 0;<br>
&nbsp;&nbsp;}<br>
&nbsp;&nbsp;if(!StackEmpty(s)) return 0;<br>
&nbsp;&nbsp;return 1;<br>
}//IsReverse
<p>3.18
<p>Status Bracket_Test(char *str)//判别表达式中小括号是否匹配<br>
{<br>
&nbsp;&nbsp;count=0;<br>
&nbsp;&nbsp;for(p=str;*p;p++)<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(*p=='(') count++;<br>
&nbsp;&nbsp;&nbsp;&nbsp;else if(*p==')') count--;<br>
&nbsp;&nbsp;&nbsp;&nbsp;if (count<0) return ERROR;<br>
&nbsp;&nbsp;}<br>
&nbsp;&nbsp;if(count) return ERROR; //注意括号不匹配的两种情况<br>
&nbsp;&nbsp;return OK;<br>
}//Bracket_Test
<p>3.19
<p>Status AllBrackets_Test(char *str)//判别表达式中三种括号是否匹配<br>
{<br>
&nbsp;&nbsp;InitStack(s);<br>
&nbsp;&nbsp;for(p=str;*p;p++)<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(*p=='('||*p=='['||*p=='{') push(s,*p);<br>
&nbsp;&nbsp;&nbsp;&nbsp;else if(*p==')'||*p==']'||*p=='}')<br>
&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(StackEmpty(s)) return ERROR;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pop(s,c);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(*p==')'&&c!='(') return ERROR;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(*p==']'&&c!='[') return ERROR;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(*p=='}'&&c!='{') return ERROR; //必须与当前栈顶括号匹配<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;}//for<br>
&nbsp;&nbsp;if(!StackEmpty(s)) return ERROR;<br>
&nbsp;&nbsp;return OK;<br>
}//AllBrackets_Test
<p>3.20
<p>void Repaint_Color(int g[m][n],int i,int j,int color)//把点(i,j)相邻区域的颜色置换为color<br>
{<br>
&nbsp;&nbsp;old=g[i][j];<br>
&nbsp;&nbsp;InitQueue(Qx,Qy);<br>
&nbsp;&nbsp;EnQueue(Qx,i);EnQueue(Qy,j);<br>
&nbsp;&nbsp;while(!QueueEmpty(Qx))<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;DeQueue(Qx,x);Dequeue(Qy,y);<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(x>1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(g[x-1][y]==old)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g[x-1][y]=color;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnQueue(Qx,x-1);EnQueue(Qy,y); 
//修改左邻点的颜色<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(y>1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(g[x][y-1]==old)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g[x][y-1]=color;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnQueue(Qx,x);EnQueue(Qy,y-1); 
//修改上邻点的颜色<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(x<m)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(g[x+1][y]==old)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g[x+1][y]=color;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnQueue(Qx,x+1);EnQueue(Qy,y); 
//修改右邻点的颜色<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(y<n)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(g[x][y+1]==old)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g[x][y+1]=color;<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -