1)順序棧
#include #include #define status int
#define ok 1
#define error 0
#define overflow -2
#define stack_init_size 20
#define stackincrement 5
#define selemtype int
typedef struct sqstack;
//因為要修改棧s記憶體中資料成員的值,因此必須傳遞s的位址
status initstack(sqstack *s)
(*s).top = (*s).base;
(*s).stacksize = stack_init_size;
return ok;
}status gettop(sqstack s,selemtype *e)
status push(sqstack *s,selemtype e)
(*s).top = (*s).base + (*s).stacksize;
(*s).stacksize += stackincrement;
}*(*s).top++ = e;
return ok;
}status pop(sqstack *s,selemtype *e)
*e = *--(*s).top;
return ok;
}void clearstack(sqstack *s)
void destroystack(sqstack *s)
void printstack(sqstack s)
printf("\n");
}int main(void)
destroystack(&s);
return 0;
}
2)鏈棧
鏈棧在棧中不常用,其思想不變。鏈棧由單鏈表構成,可以採用頭插法和尾插法進行棧的構造。若採用頭插法,則頭節點為top,遍歷時只能從棧頂開始。若採用尾插法,則需要特製棧頂指標標誌,遍歷時是從棧基開始。
data structure 之棧與佇列
問題一 用兩個佇列實現乙個棧 思路 定義兩個佇列分別為q1,q2。呼叫棧的push操作時,直接將元素push到佇列q1中,時間複雜度為o 1 呼叫棧的pop操作時,先把q1中的q1.size 1個元素push到q2中,然後再pop出q1中的最後乙個元素,再把q2中的所有元素全部push到q1中,時間...
DataStructure 線性表 棧 佇列
這裡是水水水的資料結構課的筆記 1.線性表 一些無腦的操作 低配vector,線性表無序有序都可以通過下標快速訪問。但是修改操作耗時大,建議不太靈活,多組讀取的資料使用 include using namespace std template typename e class list list c...
棧的學習(3)
棧學習中必做題 中綴表示式轉換成字尾表示式 字尾表示式也叫逆波蘭表示式 列如 a b ab 首先用順序儲存來實現 include includechar stack 100 int compare char s1,char s2 int isblock void pop int t void pus...