链栈的一系列操作

1.入栈

2.出栈

3.栈顶

4.清空

5.显示已得到的链栈
    
6.退出

链栈

链栈是指采用链式存储结构实现的栈。通常链栈用单链表来表示。

入栈和出栈的示意图如下:

入栈示意图:

在这里插入图片描述

 出栈示意图:

在这里插入图片描述

此代码需要先利用入栈操作创建一个链栈再执行其他操作。

如图:

执行结果如下:

 

源码实现如下:

 

#include<stdio.h>
typedef int Elem;
typedef struct Snode{
	Elem data;
	Snode *next;
}Snode, *LinkList;

void initStack(LinkList &s){ // 初始化 
	s = NULL;
	return;
}

bool isEmpty(LinkList &s){ // 栈空
    if(s == NULL){
    	return true;
	} 
	return false;
}

void push(LinkList &s){ // 入栈 
	Elem e;
	Snode *p;
	printf("入栈的值:\n");
	scanf("%d",&e);	
	p = new Snode;
	p->data = e;
	p->next = s; 
	s = p;
	return;
}

void pop(LinkList &s){  // 出栈 
    Elem e;
	if(isEmpty(s)){
		printf("栈空\n");
		return;
	} 
	e = s->data;
	LinkList p = s;
	s = s->next;
	delete p;
	printf("%d 出栈成功\n",e);
	return;	
}

Elem getTop(LinkList &s){  // 栈顶元素
    if(!isEmpty(s)){
    	printf("%d\n",s->data);
    	return s->data;
	}
}

void toEmpty(LinkList &s){  // 清空 
	LinkList p;
	while(s != NULL){
		p = s;
		s = s->next;
		delete p;
	}
	return;
}

void show(LinkList &s){ // 显示栈 
	if(!isEmpty(s)){
		LinkList p = s;
		while(p != NULL){
			printf("%d  ",p->data);
			p = p->next;
		}
		printf("\n");
		return;
	}
}

void menu(){// 菜单
    printf("------1.入栈\n");
	 printf("------2.出栈\n");
	 printf("------3.栈顶\n");
	 printf("------4.清空\n");
	 printf("------5.显示\n");
	 printf("------6.退出\n");
	 printf("请输入:\n");
}

int main(){
	int choice;
	int flag = 1;
	LinkList L;
	initStack(L);
	while(flag){
		menu();
		scanf("%d",&choice);
		switch(choice){
			case 1: push(L);  break;
			case 2: pop(L);   break;
			case 3: getTop(L);  break;
			case 4: toEmpty(L);  break;
			case 5: show(L);  break;
			case 6: flag = 0;  break;
		}
	}
	return 0;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值