棧的基本操作

2021-07-06 07:27:22 字數 1674 閱讀 2014

當你看到這個時,你會想起你敲過多少遍:

#include #include #define elemtype int

#define status int

#define init_size 10 //初始化長度

#define incre_size 10 //增量

#define ok 1

#define error 0

#define overflow -1

typedef structsqstack;

//初始化棧

status initstack(sqstack &s)

s.top = s.base;//棧頂棧底同時指向底部

s.stacksize = init_size;

return ok;

}//取得頂部元素

status gettop(sqstack s,elemtype &e)

e = *--s.top;//棧頂先減後取值

return ok;

}//進棧

status push(sqstack &s,elemtype e)

s.top = s.base + s.stacksize;//棧頂重新指向棧頂

s.stacksize += incre_size;

} *s.top++ = e;//否則直接賦值到棧頂後棧頂指標往後移

return ok;

}//出棧

status pop(sqstack &s,elemtype &e)

e = *--s.top;//先減後取值

return ok;

}//判斷棧空

status isstackempty(sqstack s)else

}//判斷棧是否滿

status isstackfull(sqstack s)else

}//獲得棧的長度

int getstacklength(sqstack s)

//銷毀棧

void destroystack(sqstack &s)

//列印棧中元素

void printstack(sqstack s)

while(st.top != st.base)

destroystack(st);

printf("\n");

}int main()

printf("進棧成功\n");

printf("棧中元素為:");

printstack(s);

pop(s,x);

printf("pop彈出的元素為:%d\n",x);

printf("棧中元素為:");

printstack(s);

gettop(s,x);

printf("gettop的元素為:%d\n",x);

printf("棧中元素為:");

printstack(s);

printf("棧的長度為:%d\n",getstacklength(s));

destroystack(s);

printf("銷毀棧成功\n");

return 0;

}

執行結果:

棧 的基本操作。

include include typedef struct node node,pnode typedef struct stack stack,pstack void initialize pstack mystack 棧的初始化。int push stack pstack mystack,in...

棧的基本操作

描述 棧是一種重要的資料結構,它具有push k和pop操作。push k是將數字k加入到棧中,pop則是從棧中取乙個數出來。棧是後進先出的 把棧也看成橫向的乙個通道,則push k是將k放到棧的最右邊,而pop也是從棧的最右邊取出乙個數。假設棧當前從左至右含有1和2兩個數,則執行push 5和po...

棧的基本操作

下面先實現站的基本功能,最後通過乙個test來測試下方法是否實現 建個.c檔案 typedef struct seqstack 初始化 seqstack seqstackinit return null 判斷棧是否為空 int seqstackisempty seqstack s void seqs...