📄 xtjd3.htm
字号:
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">
//若队列不空,则删除cq的队头元素,用e返回其值</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
//并返回OK,否则返回ERROR</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
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">
p=cq.erar->next->next;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
e=p->data; cq.rear->next->next=p->next;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
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">
free(p); 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 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">
QElemType *base;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
int rear;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
int 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">
//插入元素e为q的新的队尾元素</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if (q.length==MAXSIZE) return ERROR;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
q.base[q.rear]=e;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
q.rear=(q.rear+1)%MEXSIZE; </font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
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">
//若队列不空,则删除q的队头元素,用e返回其值</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
//并返回OK,否则返回ERROR</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if (q.length==0) return ERROR;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
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">
q.length--;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
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">
//判断读入的一个以‘@’为结束符的字符序列是否为回文</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
InitStack(s); InitQueue(q); c=getchar();</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
while (c!='@'){</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
Push(s,c); EnQueue(q,c);</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
c=getchar();</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"><font size="3">
while (!EmptyStack(s)){</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
Pop(s,x); DeQueue(q,y);</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if (x!=y) return FALSE;</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"><font size="3">
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>
Elemtype
*base;<br>
Elemtype
*top;<br>
}BDStacktype;
//双向栈类型
<p>Status Init_Stack(BDStacktype &tws,int m)//初始化一个大小为m的双向栈tws<br>
{<br>
tws.base[ 0 ]=(Elemtype*)malloc(sizeof(Elemtype));<br>
tws.base=tws.base[ 0 ]+m;<br>
tws.top[ 0 ]=tws.base[ 0 ];<br>
tws.top=tws.base;<br>
return OK;<br>
}//Init_Stack
<p>Status push(BDStacktype &tws,int i,Elemtype x)//x入栈,i=0表示低端栈,i=1表示高端栈<br>
{<br>
if(tws.top[ 0 ]>tws.top) return OVERFLOW; //注意此时的栈满条件<br>
if(i==0) *tws.top[ 0 ]++=x;<br>
else if(i==1) *tws.top--=x;<br>
else return ERROR;<br>
return OK;<br>
}//push
<p>Status pop(BDStacktype &tws,int i,Elemtype &x)//x出栈,i=0表示低端栈,i=1表示高端栈<br>
{<br>
if(i==0)<br>
{<br>
if(tws.top[ 0 ]==tws.base[ 0 ]) return OVERFLOW;<br>
x=*--tws.top[ 0 ];<br>
}<br>
else if(i==1)<br>
{<br>
if(tws.top==tws.base) return OVERFLOW;<br>
x=*++tws.top;<br>
}<br>
else return ERROR;<br>
return OK;<br>
}//pop
<p>3.16
<p>void Train_arrange(char *train)//这里用字符串train表示火车,'H'表示硬席,'S'表示软席<br>
{<br>
p=train;q=train;<br>
InitStack(s);<br>
while(*p)<br>
{<br>
if(*p=='H') push(s,*p); //把'H'存入栈中<br>
else *(q++)=*p; //把'S'调到前部<br>
p++;<br>
}<br>
while(!StackEmpty(s))<br>
{<br>
pop(s,c);<br>
*(q++)=c; //把'H'接在后部<br>
}<br>
}//Train_arrange
<p>3.17
<p>int IsReverse()//判断输入的字符串中'&'前和'&'后部分是否为逆串,是则返回1,否则返回0<br>
{<br>
InitStack(s);<br>
while((e=getchar())!='&')<br>
push(s,e);<br>
while((e=getchar())!='@')<br>
{<br>
if(StackEmpty(s)) return 0;<br>
pop(s,c);<br>
if(e!=c) return 0;<br>
}<br>
if(!StackEmpty(s)) return 0;<br>
return 1;<br>
}//IsReverse
<p>3.18
<p>Status Bracket_Test(char *str)//判别表达式中小括号是否匹配<br>
{<br>
count=0;<br>
for(p=str;*p;p++)<br>
{<br>
if(*p=='(') count++;<br>
else if(*p==')') count--;<br>
if (count<0) return ERROR;<br>
}<br>
if(count) return ERROR; //注意括号不匹配的两种情况<br>
return OK;<br>
}//Bracket_Test
<p>3.19
<p>Status AllBrackets_Test(char *str)//判别表达式中三种括号是否匹配<br>
{<br>
InitStack(s);<br>
for(p=str;*p;p++)<br>
{<br>
if(*p=='('||*p=='['||*p=='{') push(s,*p);<br>
else if(*p==')'||*p==']'||*p=='}')<br>
{<br>
if(StackEmpty(s)) return ERROR;<br>
pop(s,c);<br>
if(*p==')'&&c!='(') return ERROR;<br>
if(*p==']'&&c!='[') return ERROR;<br>
if(*p=='}'&&c!='{') return ERROR; //必须与当前栈顶括号匹配<br>
}<br>
}//for<br>
if(!StackEmpty(s)) return ERROR;<br>
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>
old=g[i][j];<br>
InitQueue(Qx,Qy);<br>
EnQueue(Qx,i);EnQueue(Qy,j);<br>
while(!QueueEmpty(Qx))<br>
{<br>
DeQueue(Qx,x);Dequeue(Qy,y);<br>
if(x>1)<br>
if(g[x-1][y]==old)<br>
{<br>
g[x-1][y]=color;<br>
EnQueue(Qx,x-1);EnQueue(Qy,y);
//修改左邻点的颜色<br>
}<br>
if(y>1)<br>
if(g[x][y-1]==old)<br>
{<br>
g[x][y-1]=color;<br>
EnQueue(Qx,x);EnQueue(Qy,y-1);
//修改上邻点的颜色<br>
}<br>
if(x<m)<br>
if(g[x+1][y]==old)<br>
{<br>
g[x+1][y]=color;<br>
EnQueue(Qx,x+1);EnQueue(Qy,y);
//修改右邻点的颜色<br>
}<br>
if(y<n)<br>
if(g[x][y+1]==old)<br>
{<br>
g[x][y+1]=color;<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -