📄 xtjd3.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>New Page 1</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="Microsoft FrontPage 4.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY>
<P align=left><B><SPAN
style="COLOR: blue; FONT-FAMILY: 宋体; FONT-SIZE: 24pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">数据结构辅导站</SPAN><SPAN
lang=EN-US
style="COLOR: blue; FONT-FAMILY: Times New Roman; FONT-SIZE: 24pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-spacerun: yes; mso-fareast-font-family: 宋体">
</SPAN></B><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt"></SPAN><span lang="EN-US" style="font-size:10.5pt;mso-bidi-font-size:12.0pt;font-family:宋体;
mso-bidi-font-family:"Times New Roman";mso-font-kerning:1.0pt;mso-ansi-language:
EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA"><a href="index.htm">返回主页</a></span></P>
<HR>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">3.15 </font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">#define
StackSize 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">
SElemType *base;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
SElemType *top0;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
SElemType *top1;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">}TSqStack;</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
InitStack(TSqStack tws){</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">
if (!(tws.base=(SElemType *)malloc(StackSize*sizeof(SElemType))))exit(OVERFLOW);</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
tws.top0=tws.base;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
tws.top1=tws.base[StackSize-1];</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
Push(TSqStack &tws, int i, SElemType x){</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
//将元素x压入双向栈tws的第i个栈中,i=0,1</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if (tws.top0==tws.top1+1)exit(OVERFLOW);</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if (i==0) *tws.top0++=x;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
else if (i==1) *tws.top1--=x;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
else return ERROR;</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">SElemType
Pop(TSqStack &tws, int i){</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
//若双向栈tws的第i个栈不空,则删除第i个栈的栈顶元素并返回其值,否则返回空元素</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if (i!=0||i!=1) return NULL;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if (i==0&&tws.top0) return *--tws.top0;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if (i==1&&tws.top1!=tws.base[StackSize-1]) return *++tws.top1;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
return NULL;</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.17 </font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">Status
Model(){</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
//识别依次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
//序列1和序列2中不包含字符‘&’,序列1是序列2的逆序列</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
InitStack(s); c=getchar();</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
while (c!='&') {Push(s,c); c=getchar();}</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">
while (c!='@'&&!StackEmpty(s)) {</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
Pop(s,x);</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if (c==x) c=getchar();</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
else 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">
if (c=='@' && StackEmpty(s)) return TRUE;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
else 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"> </P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">3.19</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">Status
BracketsMatch(){</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); 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">
if ( c=='(' || c=='[' || c=='{') Push(s,c);</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if ( c==')' || c==']' || c=='}'){</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if EmptyStack(s) return FALSE;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
Pop(s,x);</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if
(!((x=='('&&c==')')||(x=='['&&c==']')||(x=='{'&&c=='}')))
return FALSE;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
}//if</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">
}//while</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if EmptyStack(s) return TRUE;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
else 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"> </P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">3.28</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">typedef
struct CQNode {</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
CQElemType data;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
struct CQNode *next;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">}CQNode,
*CQueuePtr;</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">typedef
struct {</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
CQueuePtr rear;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">}CLinkQueue;</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
InitCQueue(CLinkQueue &cq) {</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">
if (!(cq.rear=(CQueuePtr)malloc(sizeof(CQNode))) exit(OVERFLOW);</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
cq.rear->next=cq.rear;</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
EnCQueue(CLinkQueue &cq, CQElemType e){</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
//插入元素e为cq的新的队尾元素</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
if (!(p=(CQueuePtr)malloc(sizeof(CQNode)))) exit(OVERFLOW);</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
p->data=e; p->next=cq.rear->next;</font></P>
<P align=left
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">
cq.rear->next=p; cq.rear=p;</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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -