栈(链表)

#include <iostream>
using namespace std;
#define null 0
typedef struct Stack{
	int a;
	struct Stack *next ;	
}Node;
Stack * top;
void push(Stack *top);  //压栈 
void pop(Stack *top);   //弹栈 
void show(Stack *top);  //显示 
void clear(Stack *top);//清空 

int main(){
	top = (Stack *)malloc(sizeof(Node));
	top ->next = null;
	while(1){
		printf("1.压栈\n2.弹栈\n3.查看栈中元素\n4.清空栈\n5.退出\n"); 
		int n ;
		cin >> n;
		cout << "***************************" <<endl;
		if(n == 1)  push(top);
		else if (n == 2) pop(top);
		else if (n == 3) show(top);
		else if (n == 4) clear(top);
		else break;	
	}

return 0;
}
void pop(Stack *top){
	if(top ->next){
		Stack *p;
		p = top ->next;			//让top直接指向栈的第二个; 
		top ->next = p ->next;
	}
	else cout << "Stack Null!"<<endl; 
	cout << "***************************" <<endl;
}

void push(Stack *top){
 	Stack * p;
	p = (Stack *)malloc(sizeof(Node));
 	cin >> p ->a;
	p ->next = top ->next;
	top ->next = p;
	cout << "***************************" <<endl;
}

void show(Stack *top){
	if(!top ->next) cout << "Stack Null!"<<endl; 
	else{
		Stack *p ;
		p = top ->next;
		while(p){
			cout << p ->a <<endl;
			p = p ->next;
		}
	}
	cout << "***************************" <<endl;
}
void clear(Stack *top){
	top ->next = null;
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值