棧和佇列面試題(三)

2021-07-17 05:54:14 字數 1063 閱讀 1589

4.元素出棧入棧的合法性,如入棧的序列(1,2,3,4,5),出棧的序列為(4,5,3,2,1).

思想:先入棧乙個元素,將出棧序列的第乙個元素和該棧的棧頂元素比較,如果相同,那就讓該元素出棧且出棧序列往後走乙個,如果不相同,就按照入棧序列再把下乙個元素入棧,再接著把棧頂元素和出棧元素進行比較,就這樣迴圈比較,直到出棧序列為空,如果棧也為空,說明該出棧序列是合法的,否則就是不合法的。

例如:入棧序列為(1,2,3,4,5),出棧序列為(4,5,3,2,1)

(1)先判斷入棧字串長度和出棧字串長度是否相等,如果不相等,那就直接是不合法的出棧序列,若相等,就進行第二步。

(2)如圖:

**實現:

//元素出棧入棧的合法性

#include #include #include using namespace std;

templateclass islegality

/*size_t j = 0;

for (size_t i = 0; i < size1; ++i)

}} while (!s.empty())

else

if (j == size1)

else

}*/while(*str1 != '\0'&&*str2 != '\0')

while(!s.empty()&&s.top() == *str2)

}return s.empty() ? true : false;

}private:

stacks;

};

test.cpp

void test()

棧和佇列面試題

遞迴反轉乙個棧 void reverse stack s reverse s int tmp2 s.top s.pop reverse s s.push tmp1 reverse s s.push tmp2 遞迴排序乙個棧 void sort stack s sort s int tmp2 s.to...

棧和佇列面試題

1.使用兩個棧,實現乙個佇列。棧 先進後出,且只能從棧頂pop出資料。佇列 先進先出,對頭pop資料,隊尾push資料。如下 include template class myqueue void pop else if stack2.empty private stack stack1 stack...

棧和佇列面試題

採用順序棧實現棧基本操作 採用鏈式佇列實現佇列基本操作 define maxsize100 typedef int sdatatype typedef struct stack stack typedef struct minstack minstack void stackinit stack s...