棧 順序棧 鏈棧

2021-10-05 21:26:26 字數 2967 閱讀 8684

棧:順序棧 鏈棧

分別用順序表和煉表實現棧,完成入棧、出棧、窺探棧頂元素等操作……

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