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

📄 栈的操作.txt

📁 C语言数据结构源代码
💻 TXT
字号:
///////////////////////////////////////////////
//			作者:03031A班  李戬			 //
//											 //
//		   2003年  xx月 xx日   晚			 //
///////////////////////////////////////////////
#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#define STACK_INIT_SIZE 5
#define STACKINCREMENT 1//宏定义
typedef struct{
	int *base;
	int *top;
	int stacksize;
}sqstack;//实现栈的结构体

InitStack(sqstack &s)
{
	s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
	if(!s.base)
		return (1);
	else
		s.top =s.base;
		s.stacksize=STACK_INIT_SIZE;
		return 0;
}//构造空栈的函数

int Push(sqstack &s,int i)
{
	if(s.top-s.base>=s.stacksize)
	{
		s.base=(int *)realloc(s.base,(s.stacksize+STACK_INIT_SIZE)*sizeof(int));
		if(!s.base)
			exit (1);
		else
		{
			s.top=s.base+s.stacksize;
			s.stacksize+=STACKINCREMENT;
		}	
	}
	else
		*s.top++=i;
	return 0;
}//插入元素i为新的栈顶元素的函数
int Pop(sqstack &s,int &i)
{
	if(s.top==s.base)
		return (1);
	else
		i=*--s.top;
		return 0;
}//栈顶元素弹出函数
void main()
{
	int ret,ret1,ret2,j,k=0,k1;
	char reply='s';
	sqstack s1;
	ret=InitStack(s1);
	if(!ret)
	{
		for(int l=0;l<4;l++)
			{
				cout<<"please enter a number you want to bulid a stack:"<<endl;
				cin>>j;
				ret1=Push(s1,j);
				if(!ret1)
					cout<<"push succeed!"<<endl;
					cout<<"j="<<j;
				k++;
			}
		do
		{
			//for(int l=0;l<5;l++)
			//{
				cout<<"please enter a number you want to bulid a stack:"<<endl;
				cin>>j;
				ret1=Push(s1,j);
				if(!ret1)
					cout<<"push succeed!"<<endl;
					cout<<"j="<<j<<endl;
				k++;
			//}

			cout<<"do you want to contiue?'y/n'"<<endl;
			cin>>reply;
		}
		while(reply!='n');
		cout<<k<<endl;
		cout<<"break"<<endl;
		
		for(k1=k;k1!=0;k1--)       
		{
			cout<<"j="<<j; 
			ret2=Pop(s1,j);
			if(ret2==0)
				cout<<"pop succeed !"<<endl;
			else
				cout<<"pop error"<<endl;
		}
	}
	else
		cout<<"error"<<endl;
}

⌨️ 快捷键说明

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