日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构复习笔记(2)

發布時間:2023/12/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构复习笔记(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1,? 若入棧的元素為n,則可得到的輸出序列數量為 (2n)!/(n+1)(n!)(n!)

2,? 用兩個長度相同的棧S1,S2構造一個隊列。在S1中進行入隊操作,S2中進行出隊操作 ,判斷隊列空的條件是,S1S2同時為空,判斷隊列滿的條件是S1S2同時為滿。

void?EnQueue(ElemType?x)
{
????
if(!Full(S1))
????
{//S1未滿直接進入
????????S1.Push(x);
????}

????
else
????
{
????????
if(Empty(S2)==true)
????????
{
????????????
while(!Empty(S1))
????????????
{
????????????????S2.Push(S1.Pop());
????????????}

????????????S1.Push(x);????????
????????}

????}

}


ElemType?DeQueue()
{
????
if(!Empty(S2))
????
{
????????
return?S2.Pop();
????}

????
else
????
{
????????
if(!Empty(S1))
????????
{
????????????
while(!Empty(S1))
????????????
{
????????????????S2.Push(S1.Pop());
????????????}

????????????
return?S2.Pop();
????????}

????????
????}

}


3.求兩個正整數的最大公約數的非遞歸算法。

#define?MAX?100
struct?Stack
{
????
int?s;
????
int?t;
}
;

int?gcd(int?m,int?n)
{
????
int?k;
????Stack?S[MAX];
????
int?top?=?-1,tmp;
????
if(m<n)
????
{
????????tmp?
=?m;
????????m?
=?n;
????????n?
=?tmp;
????}

????top
++;
????S[top].s?
=?m;
????S[top].t?
=?n;
????
while(top>=0&&S[top].t!=0)
????
{
????????
if(S[top].t!=0)
????????
{
????????????tmp?
=?S[top].s;
????????????m?
=?S[top].t;
????????????n?
=?m%tmp;
????????????top
++;
????????????S[top].s?
=?m;
????????????S[top].t?
=?n;
????????}

????}

????
return?S[top].s;
}


4

????????????????????? n+1,m =0

Akm(m,n)? =?????????? Akm(m-1,1) m!=0,n=0

????????????????????? Akm(m-1,Akm(m,n-1)),m!=0,n!=0

寫非遞歸算法。


#define?MAXSIZE?100
typedef?
struct
{
????
int?tm;
????
int?tn;
}
Stack;

int?akm(int?m,int?n)
{
????Stack?S[MAXSIZE];
????
int?top?=?0;
????S[top].tm?
=?m;
????S[top].tn?
=?n;
????
do
????
{
????????
while(S[top].tm!=0)
????????
{
????????????
while(S[top].tn!=0)
????????????
{
????????????????top
++;
????????????????S[top].tm?
=?S[top-1].tm;
????????????????S[top].tn?
=?S[top-1].tn-1;
????????????}

????????????S[top].tm
--;
????????????S[top].tn
=1;
????????}

????????
if(top>0)
????????
{
????????????top
--;
????????????S[top].tm
--;
????????????S[top].tn?
=?S[top].tn+1;
????????}

????????
????}
while(top!=0?||?S[top].tm!=0);
????top
--;
????
return?S[top+1].tn+1;
}

5.寫出和下列遞歸過程等價的非遞歸過程

void?test(int?&sum)
{
????
int?k;
????scanf(
"%d",&k);
????
if(k==0)?sum?=?1;
????
else
????
{
????????test(sum);
????????sum?
=?k*sum;
????}

????printf(
"%d",sum);
}


分析:程序功能是按照輸入的整數,按相反順序進行累計乘法運算

#define?MAXSIZE?100
void?test(int?&sum)
{
????
int?Stack[MAXSIZE];
????
int?top?=?-1,k;
????sum?
=?1;
????scanf(
"%d",&k);
????
while(k!=0)
????
{
????????Stack[
++top]?=?k;
????????scanf(
"%d",&k);
????}

????printf(
"%d",sum);
????
while(top!=-1)
????
{
????????sum?
*=Stack[top--];
????????printf(
"%d",sum);
????}

}

????????


6
.假設表達式由單字母變量和雙目四則運算算符構成,寫一個算法,將一個書寫正確的表達式轉換為逆波蘭式。

void?ConPoland(char?express[],char?suffix[])
{
????
char?*p?=?express,ch1?=?*p,ch2;
????
int?k?=?0;
????InitStack(S);
????Push(S,
'#');
????
while(!StackEmpty(S))
????
{
????????
if(!IsOperator(ch1))
????????????suffix[k
++]?=?ch1;
????????
else
????????
{
????????????
switch(ch1)
????????????
{
????????????????
case?'(':????
????????????????????Push(S,ch1);
break;
????????????????
case?')':????
????????????????????Pop(S,ch2);
????????????????????
while(ch2!='(')????
????????????????????
{
????????????????????????suffix[k
++]?=?ch2;
????????????????????????Pop(S,ch2);
????????????????????}

????????????????????
break;
????????????????
default:
????????????????????
while(GetTop(S,ch2)&&precede(ch2,ch1))
????????????????????
{
????????????????????????suffix[k
++]?=?ch2;
????????????????????????Pop(S,ch2);
????????????????????}

????????????????????
if(ch1!='#')
????????????????????????Push(S,ch1);
????????????????????
break;????????????????????????????
????????????????????
????????????}

????????}

????????
if(ch1!="#')????
????????????ch1?=?*++p;
????}

????suffix[k]?
=?'\0';
}

總結

以上是生活随笔為你收集整理的数据结构复习笔记(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。