数据结构——链栈的简单实现

//链栈的实现
#include<stdio.h>
#include<stdlib.h>
typedef struct LinkStackNode{
	int data;
	LinkStackNode *top;
}LinkStackNode,*LinkStack;

//链栈的初始化
LinkStack InitLinkStack(LinkStack &LS){
	LS->top = NULL;
	return LS;
}

//判栈空
bool LinkStackEmpty(LinkStack &LS){
	if(LS->top == NULL)
		return true;
	else
		return false;
}

//入栈操作
bool Push(LinkStack &LS,int x){
	LinkStack q = (LinkStack)malloc(sizeof(LinkStackNode));
	q->data = x;
	q->top = LS->top;
	LS->top = q;
} 

//输出栈内元素
bool Stack_Print(LinkStack &LS){
	LinkStack p = LS->top;
	if(LinkStackEmpty(p)){
		printf("该栈为空栈!\n");
		return false;
	}
	else
		while(p!=NULL){
			printf("%d\n",p->data);
			p = p->top;
		}
} 

//出栈操作
int Pop(LinkStack &LS){
	int x;
	LinkStack p = LS->top;
	if(LinkStackEmpty(p)){
		printf("该栈为空栈!\n");
		return -1;
	}
	else{
		x= p->data;
		LS->top = p->top;
		free(p);
		p = p->top;
	}
	return x;
}

int main(){
	int x,counter,result;
	LinkStack L = (LinkStack)malloc(sizeof(LinkStack));
	InitLinkStack(L);
	printf("请输入入栈元素个数\n");
	scanf("%d",&counter);
	printf("请依次输入入栈元素:\n");
	for(int i = 0;i < counter;i++){
		scanf("%d",&x);
		Push(L,x);
	}
	printf("栈内元素如下所示:\n");
	Stack_Print(L);
	result = Pop(L);
	printf("出栈元素是:%d\n",result);
	printf("出栈结果如下所示:\n");
	Stack_Print(L);
	return 0;
} 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值