棧和佇列初識(二)

2021-09-03 02:14:09 字數 1025 閱讀 9155

#include #include #define stack_init_size 100  //儲存空間初始分配量

#define stackincrement 10 //儲存空間分配增量

typedef struct stack;

int initstack(stack *s)//構造乙個空棧

s->top = s->base;

s->stacksize = stack_init_size;

return 1;

}//壓棧的方法,i為需要壓入棧頂的元素

int push(stack *s,int i)

if(s->base == null)

*s->top++ = i; //把元素壓棧

return 1;

}//彈棧的方法

int pop(stack *s)

//利用兩個棧模擬乙個佇列

int main()

printf("\n");

//出棧的時候每次先把1棧中除棧底元素之外的所有元素彈到2棧中

//然後再彈出1棧棧底元素

//最後再把2棧中的元素壓入1棧中

//重複以上動作,直到1棧為空

printf("出佇列的順序為:\n");

while(st1.base!= st1.top)

return 0;

}

template class cstack

~cstack(void)

{}t deletehead();

private:

queueq1;

queueq2;

};else

}templatet cstack::deletehead()

ret = q2.front();

q2.pop();

}else

ret = q1.front();

q1.pop();

}return ret;

實驗二 棧和佇列 順序棧 順序佇列

棧是什麼?棧是一種結構,也是一種方式。棧代表著 後進先出 我是這麼理解的 如圖 就像是放在試管裡的雞蛋,新放進去的雞蛋肯定是在最上層,想拿走的話只能從最上層乙個個拿,這種方式叫做棧。棧 stack 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對...

實驗二棧和佇列

一 1.順序棧 源 include const int stacksize 10 template class seqstack seqstack void push void pop datatype gettop int empty private datatype data stacksize...

棧和佇列習題二

目錄 一 實現乙個棧,要求實現push 入棧 pop 出棧 min 返回最小值 的時間複雜度為o 1 二 元素出棧 入棧順序的合法性。如入棧的序列 1,2,3,4,5 出棧序列為 4,5,3,2,1 三 乙個陣列實現兩個棧 共享棧 注 以上三個題的完整 至 github 檢視 1 定義 思路 使用兩...