棧:順序棧 鏈棧
分別用順序表和煉表實現棧,完成入棧、出棧、窺探棧頂元素等操作……
commom.h
#ifndef _common_h_
#define _commom_h_
#include
#include
#include
#include
#include
#define elemtype int
void
swap
(elemtype *a, elemtype *b)
#endif
/*_commom_h_*/
stack.h
#ifndef _stack_h_
#define _stack_h_
#include
"common.h"
/////順序棧
#define seq_stack_default_size 8
#define seq_stack_inc_size 3
typedef
struct seqstack
seqstack;
static bool seqstack_inc
(seqstack *pst)
;void
seqstackinit
(seqstack *pst)
;bool seqstackisfull
(seqstack *pst)
;bool seqstackisempty
(seqstack *pst)
;void
seqstackpush
(seqstack *pst, elemtype x)
;void
seqstackpop
(seqstack *pst)
;elemtype seqstacktop
(seqstack *pst)
;// seqstackpeek();
void
seqstackprint
(seqstack *pst)
;void
seqstackdestroy
(seqstack *pst)
;//擴容
static bool seqstack_inc
(seqstack *pst)
//初始化
void
seqstackinit
(seqstack *pst)
bool seqstackisfull
(seqstack *pst)
bool seqstackisempty
(seqstack *pst)
//入棧
void
seqstackpush
(seqstack *pst, elemtype x)
pst->base[pst->top++
]= x;
}//出棧
void
seqstackpop
(seqstack *pst)
pst->top--;}
//窺探棧頂元素
elemtype seqstacktop
(seqstack *pst)
return pst->base[pst->top -1]
;}void
seqstackprint
(seqstack *pst)
//摧毀棧
void
seqstackdestroy
(seqstack *pst)
/////鏈棧
typedef
struct linkstacknode
linkstacknode;
typedef
struct linkstack
linkstack;
void
linkstackinit
(linkstack *pst)
;void
linkstackpush
(linkstack *pst, elemtype x)
;void
linkstackpop
(linkstack *pst)
;elemtype linkstacktop
(linkstack *pst)
;void
linkstackprint
(linkstack *pst)
;void
linkstackdestroy
(linkstack *pst)
;//初始化
void
linkstackinit
(linkstack *pst)
//入棧
void
linkstackpush
(linkstack *pst, elemtype x)
//出棧
void
linkstackpop
(linkstack *pst)
//窺探棧頂元素
elemtype linkstacktop
(linkstack *pst)
return pst->top->data;
}void
linkstackprint
(linkstack *pst)
printf
("\n");
}//摧毀
void
linkstackdestroy
(linkstack *pst)
}#endif
/* _stack_h_ */
棧,順序棧,鏈棧
棧作為一種限定性線性表,是將表的插入刪除限制為僅在表的一端進行,通常將表中允許插入刪除的一端叫做棧頂 top 因此棧頂的當前位置是動態變化的。棧的另一端叫做棧底 bottom 當棧中沒有元素時稱為空棧。插入操作稱為進棧或入棧,刪除操作稱為出棧或退棧。棧是先進後出的線性表,簡稱為lifo表。棧主要有兩...
順序棧,鏈棧
二,鏈棧 public inte ce istack public class seqstack implements istack 將棧置空 public void clear 判斷棧是否為空 public boolean isempty 返回棧中元素的個數 public intlength 返回...
棧結構 順序棧 鏈棧
定義 棧是一種與線性表相似的線性結構。不同之處是當需要對節點做增刪操作時,只能操作棧頂的節點,因此具有先進後出 或者後進先出 的特點。按儲存結構的不同,可分為順序棧和鏈棧。棧結構的幾個屬性 adt stack elemtype為型別識別符號 資料關係 r 資料操作 1 stackseq initst...