#數據結構#鏈棧

/*		鏈棧		*/
typedef struct linknode{
	ElemType data; //數據 
	struct linknode *next; //指針 
} LiStack;
//初始化棧
void initStack(LiStack *&s){
	s=(LiStack *)malloc(sizeof(LiStack));
	s->next=NULL;
} 
//銷燬棧
void DestroyStack(LiStack *&s){
	LiStack *p=s,*q=s->next;
	while(q!=NULL){
		free(p);
		p=q;
		q=p->next;
	}
	free(p);
}
//判斷棧是否爲空
bool StackEmpty(LiStack *s){
	return(s->next==NULL);
} 
//進棧
void Push(LiStack *&s,ElemType e){
	LiStack *p;
	p=(LiStack *)malloc(sizeof(LiStack));
	p->data=e;
	p->next=s->next;
	s->next=p;
} 
//出棧
bool Pop(LiStack *&s,ElemType &e){
	LiStack *p;
	if(s->next==NULL){
		return false;
	}
	p=s->next;
	e=p->data;
	s->next=p->next;
	free(p);
	return true;
} 
//取棧頂元素
bool GetTop(LiStack *s,ElemType &e){
	if(s->next=NULL){
		return false;
	}
	e=s->next->data;
	return true;
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章