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

📄 seqstack.cpp

📁 用C语言编写实现数据结构方面的例子
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 100

typedef struct  
{
	int data[MAXSIZE];
	int top;
}SeqStack;

SeqStack SeqStackInit()
{
	SeqStack s;
	s.top=-1;
	return s;
}

int SeqStackEmpty(SeqStack s)
{
	if (s.top==-1)
	{
		return true;
	}
	else
		return false;
}

SeqStack SeqStackPush(SeqStack s,int x)//b
{
	if (s.top==MAXSIZE-1)
	{
		printf("栈满!\n");
	//	exit(0);
	}
	else
	{
		s.top++;
		s.data[s.top]=x;
	}
	return s;
}

SeqStack SeqStackPop(SeqStack s)
{
	int x;

	if (s.top==-1)
	{
		printf("栈空!\n");
		exit(0);
	}
	x=s.data[s.top];
	printf("出栈元素:%d\n",x);
	s.top--;
	return s;
}

int SeqStackGetTop(SeqStack s)
{
	if (s.top!=-1)
	{
		return (s.data[s.top]);
	}
	else
		return 0;
}

void SeqStackDisplay(SeqStack s)
{
	if (s.top==-1)
	{
		printf("栈空!\n");
	}
	else
	{
		while (s.top!=-1)
		{
			printf("%d->",s.data[s.top]);
			s.top--;
		}

	}

}


int main()
{
	SeqStack s;
	int n;

	int i,seq,sel;
	int pu,getop;

	int flag=1;
	char ch;



	s=SeqStackInit();
	printf("请输入栈的长度:");
	scanf("%d",&n);

	for (i=0;i<n;i++)
	{
		printf("请输入一整数:");
		scanf("%d",&seq);
		s=SeqStackPush(s,seq);

//		SeqStackDisplay(s);
	}
	printf("\n");
	SeqStackDisplay(s);

	while (flag)
	{
		
		printf("select 1:SeqStackDisplay()\n");
		printf("select 2:SeqStackPush()\n");
		printf("select 3:SeqStackPop()\n");
		printf("select 4:SeqStackGetTop()\n");
		
		printf("请选择1--4:");
		scanf("%d",&sel);
		switch(sel)
		{
		case 1:
			printf("栈元素:");
			SeqStackDisplay(s);
			break;
		case 2:
			printf("请输入一个整数:");
			scanf("%d",&pu);
			printf("\n");
			s=SeqStackPush(s,pu);
			SeqStackDisplay(s);
			break;
		case 3:
			s=SeqStackPop(s);
		//	printf("出栈元素:%d\n",po);
			SeqStackDisplay(s);
			break;
		case 4:
			getop=SeqStackGetTop(s);
			printf("栈顶元素:%d\n",getop);
			SeqStackDisplay(s);
			break;
		}

		printf("继续操作(Y|N)");
     	getchar();
        ch=getchar();
		if ((ch=='n')||(ch=='N'))
			flag=0;
		else
			flag=1;

	}

	//栈的应用 将整数转换成二进制,八进制,等
	/*
	s=SeqStackInit();
	int N;
  scanf("%d",&N);
  while(N!=0)
  {
	  s=SeqStackPush(s,N%2);
	  N=N/2;
  }
  int e;
  while (!SeqStackEmpty(s))
  {
	  s=SeqStackPop(s);
	 // printf("%d->",e);
  }
	*/


	/*
	//栈的应用 表达式中括号匹配的检查

  s=SeqStackInit();
	char c;

	while ((ch=getchar())!='#')
	{
		switch(ch)
		{
		case '(': s=SeqStackPush(s,ch);break;
		case ')': if (SeqStackEmpty(s)||(c=SeqStackGetTop(s))!='(')
				  {
					  printf("括号不匹配");
				  }
		        	else
				s=SeqStackPop(s);
					break;
		case '[': s=SeqStackPush(s,ch);break;
		case ']': if (SeqStackEmpty(s)||(c=SeqStackGetTop(s))!='(')
				  {
					  printf(" 中括号不匹配");
				  }
		        	else
				s=SeqStackPop(s);
					break;
		case '{': s=SeqStackPush(s,ch);break;
		case '}': if (SeqStackEmpty(s)||(c=SeqStackGetTop(s))!='(')
				  {
					  printf(" 大括号不匹配");
				  }
		        	else
				s=SeqStackPop(s);
					break;
		}
	}

	if(SeqStackEmpty(s))
		printf("括号匹配成功");
	else
		printf("括号不匹配成功");
*/
/*
//栈的应用 表达式求值
   
	SeqStack optr,opnd;
	char ch;

   optr=SeqStackInit();//运算符栈初始化
   optr=SeqStackPush(,'#');//'#'置于栈底,级别最低

   opnd=SeqStackInit();//操作数栈初始化

 //  scanf("%c",&ch);//读入表达式,以'#'结束
   while (!(((ch=getchar())=='#')&&(SeqStackGetTop(optr)=='#')))
   {
	   if (ch>='0' && ch<='9')
	   {
		   SeqStackPush(optr,ch);
	   }
	   else
		   switch()
		   {
		   }
   }
*/
	return 0;
}

⌨️ 快捷键说明

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