堆疊的一些小小的實踐

2022-08-17 01:57:12 字數 1399 閱讀 5886

/*只用乙個陣列實現三個棧*/

/*方法1,每個棧都有乙個棧頂,三部分平分陣列*/

#define size 100

template

class istack

~istack()

void push(int stack_num, t n)

t pop(int stack_num)

int top(int stack_num)

bool empty(int stack_num)

};/*實現乙個棧,除了push和pop操作,還要實現min函式以返回棧中的最小值。 push,pop和min函式的時間複雜度都為o(1)。*/

/*push的時候可以用乙個變數來儲存當前最小值,但是在pop時就比較麻煩,因為不知道pop之後的最小值*/

/*可以每乙個結點中都push了這個結點時的最小值*/

/*但是這存在乙個問題,有可能有資料冗餘,多個結點的最小值都是相等的.

更好的解決辦法是使用另乙個小堆疊來儲存最小值,每一次pop時都會與當前值進行比較*/

template

class

stack

~stack()

void push(t number)

t pop()

bool empty()

t top()

};class minstack

int pop()

bool empty()

int min()

};/*使用兩個棧實現乙個佇列myqueue。*/

/*思路是入佇列時壓入到a棧中,出佇列時將b中的出棧,如果b為空,則將a出棧,壓入b*/

template

class queue_stack

t pop()

}return dst.pop();

}};/*寫程式將乙個棧按公升序排序。對這個棧是如何實現的,你不應該做任何特殊的假設。 程式中能用到的棧操作有:push | pop | peek | isempty。*/

stack

ssort(stack

s)t.push(data);

}return t;

}/*方案2:

使用乙個優先佇列來為出棧的元素排序,原棧中的元素不斷出棧然後插入優先佇列, 直到原棧為空。然後再將優先佇列中的元素不斷壓回原棧,這樣操作後, 棧中的元素便有序化了。

**如下:

*/#include

#include

#include

#include

using

namespace

std;

void qsort(stack

&s)

while (!q.empty())

}

留給我自己的一些小小的話

還是那句老話吧,我也曾能忍受無邊的黑暗,直到我見到了光明。很多的時候都在後悔沒能更加地努力,自己還有很多想學的東西都沒能學會,就不得不離開了。很大的程度上,這都是我自己的原因。因為我自己的懦弱,傷害了自己,也傷害了身邊的人。總是對自己的無能感到憤怒,卻又沒有任何現實上的改變。拿起劍,就意味著你要保衛...

MYSQL8 0 13的一些小小的問題及處理方法

希望不要活得那麼累 1.mysql8.0.13安裝好了有預設的密碼,在data檔案的.err結尾的檔案裡,開啟去找。2.mysql裝好了可以登入,命令是 mysql u root p,輸入預設密碼,然後改密碼 只有改了預設密碼才能用 命令是 alter user root localhost ide...

小小的疑問和小小的想法

1.事情交與你手,是否應該盡職盡責?大部分人說,你肯定要盡職盡責,少部分人會說這個可以不。我也一直認為應該盡職盡責,但是部分原因導致不會努力去做,如下所述 a 此事責任權是否在於你 如果我做這件事完全不用承擔任何責任,那我根本不會去努力去做,做了之後沒有任何感覺,做與不做的區別在於,少了參與做此事的...