data structure 3 棧的表示和實現

2021-09-29 08:51:58 字數 1101 閱讀 3550

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...