用指標實現鏈棧的方法

2021-06-18 16:17:52 字數 1447 閱讀 5392

在演算法中要用到多個棧時,最好用鍊錶作為棧的儲存結構,即用指標來實現。

#include#include//*******************************

//定義節點的結構體

typedef struct snode *slink;

typedef struct snode

stacknode;

//*****************************

//定義棧的結構體

typedef struct istack *stack;

typedef struct istack

lstack;

//********************************

//動態分配乙個結點,如果記憶體不足,則分配失敗

slink newstacknode()

else

return p;

}//**********************************

//棧的初始化

stack stackinit()

//*********************************

//判斷棧是否為空

int stackempty(stack s)

//*********************************

//為棧試分配乙個新結點,檢測棧空間是否為滿

int stackmemfull()

}int stackfull(stack s)

//*********************************

//取棧頂元素

int stacktop(stack s)

else return s->top->element;

}//**********************************

//新元素進棧

void push(int x,stack s)

p=newstacknode();

p->element=x;

p->next=s->top;

s->top=p;

}//**********************************

//刪除棧頂元素

int pop(stack s)

x=s->top->element ;

p=s->top;

s->top = p ->next;

free(p);

return x;

}//********************************

int main()

printf("\n出棧元素:\n");

for( i=1;i<=10;i++)

printf("%d ",pop(s));

return 0;

}

用塊鏈實現的棧

這種塊鏈棧在容量可以動態拓展的同時,節省了大量的new操作和delete操作,從而提高了效率.template typename t,int patchsize 128 預設模板引數.class patchstack 不需要初始化matters.注意一點 這不是一般的雙向鍊錶結構,而是這種棧專屬的操...

鏈棧的實現

解釋 由於鍊錶有頭指標,而棧也必須有頭指標,所有合二為一 鏈棧為空的條件為頭指標為空,頭指標儲存在乙個新的結構體中。儲存空間初始分配量 typedef int selemtype typedef int status typedef struct stacknode stacknode,linkst...

鏈棧的實現

typedef int elemtype typedef struct stacknodestacknode,linkstack 鏈棧的實現是先定義乙個結點指標,使其為null。這個作為判斷是否空棧的標誌。鏈棧的空棧借助乙個空指標,只要棧頂指標指向這個空指標就說明是空棧。鏈棧的實現是申請一塊空間,將...