習題3 9 堆疊操作合法性 20分

2021-10-06 16:36:30 字數 2556 閱讀 3545

問題描述

假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行(如沒有出現刪除時棧空)且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。

輸入

輸入第一行給出兩個正整數n和m,其中n是待測序列的個數,m(≤50)是堆疊的最大容量。隨後n行,每行中給出乙個僅由s和x構成的序列。序列保證不為空,且長度不超過100。

輸出

對每個序列,在一行中輸出yes如果該序列是合法的堆疊操作序列,或no如果不是。

程式設計步驟

1.主函式

int

main()

if((str[j]

=='\0')&&

isempty

(s))

printf

("yes\n");

else

printf

("no\n");

}return0;

}

2.需要的函式

stack createstack

(int maxsize)

;//構造乙個堆疊

bool

isempty

(stack s)

;//判斷堆疊空

bool

isfull

(stack s)

;//判斷堆疊滿

bool

push

(stack s,elementtype x)

;//入棧

bool

pop(stack s)

;//出棧

void

clear

(stack s)

;//清棧

2.1

stack createstack

(int maxsize)

2.2

bool

isempty

(stack s)

bool

isfull

(stack s)

2.3

bool

push

(stack s,elementtype x)

}bool

pop(stack s)

}

2.4

void

clear

(stack s)

總**

#include

#include

#define maxs 101

#define maxn 50

typedef

enum

bool

;typedef

int elementtype;

typedef

int position;

typedef

struct snode *ptrtosnode;

struct snode

;typedef ptrtosnode stack;

stack createstack

(int maxsize)

;//構造乙個堆疊

bool

isempty

(stack s)

;//判斷堆疊空

bool

isfull

(stack s)

;//判斷堆疊滿

bool

push

(stack s,elementtype x)

;//入棧

bool

pop(stack s)

;//出棧

void

clear

(stack s)

;//清棧

intmain()

if((str[j]

=='\0')&&

isempty

(s))

printf

("yes\n");

else

printf

("no\n");

}return0;

}stack createstack

(int maxsize)

bool

isempty

(stack s)

bool

isfull

(stack s)

2.3bool

push

(stack s,elementtype x)

}bool

pop(stack s)

}void

clear

(stack s)

3 9 堆疊操作合法性 20分

假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行 如沒有出現刪除時棧空 且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。輸入格式 輸入第一行給出兩個正整數n和m,其中n是待測序列的個數,m ...

5 5 堆疊操作合法性 20分

5 5 堆疊操作合法性 20分 假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行 如沒有出現刪除時棧空 且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。輸入第一行給出兩個正整數n和m,其中n...

5 5 堆疊操作合法性 20分

5 5 堆疊操作合法性 20分 假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行 如沒有出現刪除時棧空 且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。輸入第一行給出兩個正整數n和m,其中n...