(
(
(
答
(
(
(
不能得到的序列是
答
鏈棧不需要在頭部附加頭結點
答
循環隊列的優點是
答
當只設頭指針時
(
int i; arr[
while ( StackEmpty(S)) arr[n++]=Pop(S);
for (i=
} //Demo
(
DataType x;
while ( ! StackEmpty (&S
{
x=Pop(&S
Push(&tmp
}
while ( ! StackEmpty (&tmp) )
{
x=Pop( &tmp);
Push( &S
Push( &S
}
(
{ // 設DataType 為int 型
SeqStack T; int i;
InitStack (&T);
while (! StackEmpty( S))
if(( i=Pop(S)) !=m) Push( &T
while (! StackEmpty( &T))
{
i=Pop(&T); Push(S
}
}
(
{ // 設DataType 為int 型
int x; SeqStack S;
InitStack( &S);
while (! QueueEmpty( Q ))
{x=DeQueue( Q); Push( &S
while (! StackEmpty( &s))
{ x=Pop(&S); EnQueue( Q
}// Demo
(
int x
while ( ! QueueEmpty( &Q
{ x=DeQueue( &Q
for (i=
{ x=DeQueue(&Q
EnQueue( &Q
答
(
(
(
(
(
解
根據提示
//以下為順序棧的存儲結構定義
#define StackSize
typedef char DataType;//假定棧元素的數據類型為字符
typedef struct{
DataType data[StackSize];
int top;
}SeqStack;
int IsHuiwen( char *t)
{//判斷t字符向量是否為回文
SeqStack s;
int i
char temp;
InitStack( &s);
len=strlen(t); //求向量長度
for ( i=
Push( &s
while( !EmptyStack( &s))
{// 每彈出一個字符與相應字符比較
temp=Pop (&s);
if( temp!=S[i]) return
else i++;
}
return
}
解
算法如下
void ClearStack (SeqStack *S)
{ // 刪除棧中所有結點
S
}
因為要置空的是棧S
解
算法如下
int StackSize (SeqStack S)
{//計算棧中結點個數
int n=
if(!EmptyStack(&S))
{
Pop(&S);
n++;
}
return n;
}
上述算法的目的只要得到S棧的結點個數就可以了
解
根據提示
int PairBracket( char *SR)
{//檢查表達式ST中括號是否配對
int i;
SeqStack S; //定義一個棧
InitStack (&s);
for (i=
{
if ( S[i]==
if ( S[i]==
if (!StackEmpty(S))//棧不為空時
Pop(&s);
else return
}
if EmptyStack(&s) return
else return
}
解
雙向棧其實和單向棧原理相同
//雙向棧的棧結構類型與以前定義略有不同
#define StackSize
From:http://tw.wingwit.com/Article/program/sjjg/201311/23985.html