⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shiyan1.cpp

📁 利用C++编写的银行存储管理系统! 这是我们课程设计的
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>

typedef struct StackNode
{
	  int data;                                                  // 存 放 数 据
	  struct StackNode * next;                                   // 指 向 下 一 个 结 点
}StackNode;
typedef struct
{
	  StackNode * top;                                           // 栈 顶 指 针
}LinkStack;
//=========================================函-数-原-型-声-明======================================
void InitStack(LinkStack &S);                                    // 栈 的 初 始 化
void Push(const int &item,LinkStack &S);                         // 入 栈
char Pop(LinkStack &S);                                          // 出 栈
void GetTop(LinkStack &S);                                       // 取 栈 顶 元 素
int IsEmpty(LinkStack &S);                                       // 判 断 栈 是 否 为 空
void MakeEmpty(LinkStack &S);                                    // 清 空 栈
//=========================================栈-的-初-始-化=========================================
void initstack(LinkStack &S)
{
	S.top=NULL;
	cout<<"成功初始化栈\n";
}
//=========================================入-栈==================================================
void Push(const int &item,LinkStack &S)
{
	StackNode *t=(StackNode *) malloc(sizeof(StackNode));
		t->next=S.top;
		t->data=item;
		S.top=t;
}
//=========================================出-栈==================================================
int Pop(LinkStack &S,int &e)
{
	if(S.top==NULL)
	    return 0;
	else
	{
		e=S.top->data;
	    S.top=S.top->next;
		return 1;
	}
}
//=========================================判-断-栈-是-否-为-空===================================
int IsEmpty(LinkStack S)
{
	return S.top==NULL;
}
//=========================================取-栈-顶-元-素=========================================
void GetTop(LinkStack &S)
{int e;
	if(S.top==NULL)
		cout<<"取栈顶元素失败,该栈为空";
	else 
	{e=S.top->data;
	cout<<"取栈顶元素成功,该栈顶元素为:e="<<e;	
	}
}
//=========================================清-空-栈===============================================
void MakeEmpty(LinkStack &S)
{
	StackNode *p;
	while(S.top!=NULL)
	{
		p=S.top;
        S.top=S.top->next;
		free(p);
	}
}
//=========================================mian()-函-数===========================================
void main()
{
	LinkStack S;
	int item;
	int m;
	int n;
	cout<<"\t*******************栈-的-操-作-管-理-菜-单**********\n\n\t";
    cout<<"*******************1、栈-的-初-始-化****************\n\t";
    cout<<"*******************2、入-栈*************************\n\t";
    cout<<"*******************3、出-栈*************************\n\t";
    cout<<"*******************4、取-栈-顶-元-素****************\n\t";
    cout<<"*******************5、清-空-栈**********************\n\t";
    cout<<"*******************6、判-断-栈-是-否-为-空**********\n\t";
    cout<<"*******************7、退-出-程-序*******************\n\t";
    cout<<"*******************8、清-屏*************************\n";
    cout<<"请-选-择-您-要-进-行-的-操-作:\n";
a:	cin>>n;
	switch (n)
	{case 1: initstack(S); 
	cout<<"\n";
	goto a;    break;	 
	 case 2:{cout <<"\t请输入栈元素的个数:m=";
	       cin>>m;
	       cout<<"请依次输入入栈元素,按空格间隔\n";
	       for(int i=1;i<=m;i++)
		   {
		     cin>>item;
		     Push(item,S);
			 if(m==i) cout<<"入栈成功\n请-选-择-您-要-进-行-的-操-作:\n";
		   }
		 cout<<"\n";
		   goto a;  break;
			}
	 case 3:cout<<"出栈元素依次为:";
		 if(S.top==NULL)  cout<<"对不起,该栈为空!\n请-选-择-您-要-进-行-的-操-作:\n";
		    while(S.top!=NULL)		
			if(Pop(S,item)==1)
			    cout<<"  "<<item;
			cout<<"\n\n";			
		goto a;   break;	    
	 case 4: GetTop(S);cout<<"\n\n";
		goto a;   break;		
	 case 5:MakeEmpty(S); cout<<"栈已经被清空\n请-选-择-您-要-进-行-的-操-作:\n\n";
		goto a;   break;		
	 case 6:
		if(S.top==NULL)
			cout<<"栈S已经为空\n";
		else
			cout<<"栈S不为空\n";
		cout<<"\n";
		goto a;   break;	
	 case 7:break;
	 case 8:system("cls");
		goto a;   break;		
	 default :
			cout<<"操作错误,请重新选择\n"; 
			cout<<"\n";
			goto a;
	}	
	 cout<<"\n";
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -