#include <stdlib.h>
#include <stdio.h>
typedef int ElemType;
typedef struct Stack *link;
typedef struct Stack SNode;
struct Stack{
ElemType data;
struct Stack *next;
};
/**
* 初始化栈
*/
link init(){
link p;
p=NULL;
return p;
}
/** 入栈
* @brief push
* @param Head 栈顶指针
* @param x
* @return
*/
link push(link Head, ElemType x){
link p;
p=(link)malloc(sizeof(SNode));
if(p==NULL)
{
printf("\n Memory Error\n");
return Head;
}
p->data=x;
p->next=Head;
return p;
}
/**
* @brief pop
* @param Head 栈顶指针
* @return
*/
link pop(link Head){
link p; p=Head;
if(p==NULL)
printf("\nStack is Empty\n");
else
{
p=p->next;
free(Head);
}
return p;
}
/** 取栈顶元素
* @brief getTop
* @param Head 栈顶指针
* @return
*/
ElemType getTop(link Head){
if(Head==NULL)
{
printf("\nStack is Empty\n");
return -1;
}
else {
return Head->data;
}
}
/** 判断栈是否为空
* @brief empty
* @param Head
* @return
*/
int empty(link Head){
if(Head==NULL)
return -1;
else
return 0;
}
/** 显示栈元素
* @brief display
* @param Head
*/
void display(link Head){
link p; p=Head;
if(p==NULL)
printf("\nStack is empty\n");
else
do
{
printf("%d\t",p->data);
p=p->next;
}while(p!=NULL);
printf("\n");
}
/** 释放栈
* @brief setNull
* @param Head
* @return
*/
link setNull(link Head){
link p;p=Head;
while(p!=NULL)
{
p=p->next;
free(Head);
Head=p;
}
return Head;
}
int main(){
link head,p;
head=init();
p=push(head,1);
p=push(p,2);
p=push(p,3);
p=push(p,4);
p=push(p,5);
p=push(p,6);
display(p);
p=pop(p);
display(p);
p=pop(p);
display(p);
}
C语言实现栈的基本操作
最新推荐文章于 2025-02-24 11:10:57 发布