鏈式堆疊的實現

2021-06-22 08:43:06 字數 1769 閱讀 5506

#include< stdlib.h >

#include< stdio.h >

#include< string.h >

#define true 1

#define false 0

typedef structlelemtype;

typedef struct templstack;

lstack * initstack( );

void destroystack( lstack *s );

void clearstack( lstack *s );

void gettop( lstack *s, lelemtype *e );

void push( lstack *s, lelemtype e );

void pop( lstack *s, lelemtype *e );

int length( lstack *s );

int stackempty( lstack *s );

void print( lstack *s );

//建立乙個空棧,返回指向該空棧的位址。s指向棧,s->link指向棧頂。建立時將s->link指向空,作為棧為空的標誌。

lstack * initstack( )

s->link = null;

return s;

}

//先將棧清空,再將為指向棧的指標分配的存貯空間釋放

void destroystack( lstack *s )

//將棧清為空棧
void clearstack( lstack *s )

s->link = null;

}//獲得棧頂元素

void gettop( lstack *s, lelemtype *e )

else

}//壓棧,由棧的結構決定每次壓棧時都將s->link指向為新的元素分配的空間,放在鍊錶的第一項,且將第一項的link指向原來的第一項

void push( lstack *s, lelemtype e )

//彈棧,由棧的結構決定每次彈棧時都將鍊錶的第一項彈出,並將s->link指向彈棧前的第二項

void pop( lstack *s, lelemtype *e )

*e = s->link->data;

s->link =s->link->link;

}//棧中元素個數,棧底的標誌是棧底的link指向null

int length( lstack *s )

return count;

}//判斷棧是否為空,若為空,返回true,非空返回false

int stackempty( lstack *s )

//列印棧中的所有元素

void print( lstack *s )

printf( "base of the stack\n" );

}

#include< stdio.h >

#include"stack.h"

void main()

結果

鏈式堆疊實現

ifndef stack linked h define stack linked h include include include using namespace std templatestruct node stack templateclass stack linked templates...

堆疊的鏈式儲存實現

棧的鏈式儲存結構其實實際上就是乙個單鏈表,叫做鏈棧,插入和刪除操作只能在棧頂操作 若在棧尾,則無法對堆疊進行刪除操作 棧的鏈式儲存結構其實實際上就是乙個單鏈表,叫做鏈棧,插入和刪除操作只能在棧頂操作 若在棧尾,則無法對堆疊進行刪除操作 typedef str uct nodelinkstack li...

堆疊的鏈式儲存實現

include using namespace std typedef int elementtype typedef struct snode stack struct snode 1.建立乙個空棧 stack createstack 2.判斷堆疊是否為空 intisempty stack ptr...