演算法導論 棧

2021-07-26 22:39:07 字數 1567 閱讀 7905



標頭檔案stack.h如下:

#pragma once

#ifndef _my_stack_h

#define _my_stack_h

#define size 100

#includeclass stack

;void stack::initstack(stack &s) //初始化乙個棧

bool stack::stackempty(stack& s) const //判斷乙個棧是否為空

int stack::gettop(stack &s, pos &i) const //取出棧頂元素

else }

int stack::pushstack(stack &s, pos &i) //進棧

else }

int stack::popstack(stack &s, pos &i) //出棧

else }

size_t stack::stacklength(stack &s) const //求棧的大小

void stack::clearstack(stack &s) //清空棧

#endif

main函式如下:

#include#include"stack.h"

#includeusing namespace std;

int main()

; char temp=0;

char p1 = 'f', p2 = 'g';

my_stack.initstack(my_stack);

for (size_t i = 0; i < sizeof(s)/sizeof(s[0]); ++i)

if (my_stack.pushstack(my_stack, s[i]) == -1)

cout << "出棧的元素:" << " ";

if(my_stack.popstack(my_stack,temp)==0)

cout << temp<<" ";

if(my_stack.popstack(my_stack, temp)==0)

cout << temp << endl;

cout << "當前棧頂元素是:" << " ";

if (my_stack.gettop(my_stack, temp) == 0)

cout << temp << endl;

if (my_stack.pushstack(my_stack, p1) == -1)

cout << "the stack is overflow!" << endl;

if (my_stack.pushstack(my_stack, p2) == -1)

cout << "the stack is overflow!" << endl;

cout << "當前棧中元素個數是:" << " " << my_stack.stacklength(my_stack) << endl;

return 0;

}

演算法導論 棧與佇列

用兩個棧來實現乙個佇列。不包括棧與佇列的具體實現,包括10 1課後練習。呼叫stl。棧的特點是後進先出,佇列的特點是先進先出。所以用兩個棧實現佇列只需要把在出佇列時把第乙個棧的元素全部壓到第二個棧 第二個棧為空 這個時候第二個棧的順序就是佇列順序也就是先進先出。以下是實現 include inclu...

演算法導論程式20 棧和佇列(Python)

棧 stack 後進先出 last in,first out,lifo 被刪除的是最近插入的元素。佇列 queue 先進先出 first in,first out,fifo 被刪除的總是在集合中存在時間最長的那個元素。棧 insert push 壓入 delete pop 彈出 s 0.n 1 來實...

演算法導論8 資料結構 棧 2016 1 8

棧在暑假的時候接觸過了,當時還寫了個計算器,用的中綴表示式字尾表示式的棧操作。今天按照演算法導論上的講解規範了一下 主要是棧的初始化 判斷空棧 入棧 出棧 遍歷棧。include define maxtop 10 struct stack s void init struct stack s int...