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

📄 xtjd3.htm

📁 严蔚民版的数据结构的完整课件
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!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: 宋体">&nbsp;  
</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&nbsp;</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">&nbsp;   
SElemType&nbsp; *base;</font></P>  
  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
SElemType&nbsp; *top0;</font></P>  
  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
SElemType&nbsp; *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">&nbsp;   
//构造一个空的双向栈</font></P>  
  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
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">&nbsp;   
tws.top0=tws.base;</font></P>  
  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
tws.top1=tws.base[StackSize-1];</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   
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">&nbsp;   
//将元素x压入双向栈tws的第i个栈中,i=0,1</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
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">&nbsp;   
if (i==0) *tws.top0++=x;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
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">&nbsp;   
else return ERROR;</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">SElemType   
Pop(TSqStack &tws, int i){</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
//若双向栈tws的第i个栈不空,则删除第i个栈的栈顶元素并返回其值,否则返回空元素</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
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">&nbsp;   
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">&nbsp;   
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">&nbsp;   
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&nbsp;</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">&nbsp;   
//识别依次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
//序列1和序列2中不包含字符‘&’,序列1是序列2的逆序列</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
InitStack(s);&nbsp; c=getchar();</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
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">&nbsp;   
c=getchar();</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
while (c!='@'&&!StackEmpty(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);</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;&nbsp;&nbsp;   
if (c==x) c=getchar();</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;&nbsp;&nbsp;   
else 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;   
if (c=='@' && StackEmpty(s)) return TRUE;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
else 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"> </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">&nbsp;   
//判断依次读入的以‘@’为结束符的算术表达式中括号是否正确配对出现</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
InitStack(s);&nbsp; 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;   
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">&nbsp;&nbsp;&nbsp;   
if ( c==')' || c==']' || c=='}'){</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
if EmptyStack(s) return FALSE;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
Pop(s,x);</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
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">&nbsp;&nbsp;&nbsp;   
}//if</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;   
}//while</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
if EmptyStack(s) return TRUE;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
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">&nbsp;   
CQElemType&nbsp;&nbsp;&nbsp;&nbsp; data;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
struct CQNode&nbsp; *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">&nbsp;   
CQueuePtr&nbsp; 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">&nbsp;   
//初始化一个只有尾指针的带头结点的循环链表表示的队列</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
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">&nbsp;   
cq.rear->next=cq.rear;</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   
EnCQueue(CLinkQueue &cq, CQElemType e){</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
//插入元素e为cq的新的队尾元素</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
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">&nbsp;   
p->data=e;&nbsp; p->next=cq.rear->next;</font></P>  
<P align=left   
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"><font size="3">&nbsp;   
cq.rear->next=p;&nbsp; cq.rear=p;</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   

⌨️ 快捷键说明

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