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

📄 顺序栈.c

📁 关于部分数据结构的一些经典算法的实现
💻 C
字号:

#define m 100
typedef struct
{
	int stack[m];
  	int top;
}stackstru;

 init(stackstru *s)	/*装入栈*/
 {
 	s->top=0;
  	return 1;
 }

 int push(stackstru *s,int x)    /*入栈操作*/
 {
 	if (s->top==m)
     		printf("the stack is overflow!\n");
  	else
  	{
  		s->top=s->top+1;
  		s->stack[s->top]=x;
  	}
 }

 void display(stackstru *s)   /*显示栈所有数据*/
 {
 	if(s->top==0)
     		printf("the stack is empty!\n");
  	else
  	{
  		while(s->top!=0)
 		{
 			printf("%d->",s->stack[s->top]);
   			s->top=s->top-1;
   		}
   	}
 }

 int pop(stackstru *s)	/*出栈操作并返回被删除的那个记录*/
 {
 	int y;
  	if(s->top==0)
  		printf("the stack is empty!\n");
  	else
  	{
  		y=s->stack[s->top];
  		s->top=s->top-1;
  		return y;
  	}
 }
 
 int gettop(stackstru *s)  /*得到栈顶数*/
 { 
 	int e;
  	if(s->top==0)
  		return 0;
  	else 
  		e=s->stack[s->top];
  	return e;
 }

 main(stackstru *p)
 {
 	int n,i,k,h,x1,x2,select;
  	printf("create a empty stack!\n");
  	init(p);
  	printf("input a stack length:\n");
  	scanf("%d",&n);
  	for(i=0;i<n;i++)
  	{
  		printf("input a stack value:\n");
   		scanf("%d",&k);
   		push(p,k);
  	}
   	printf("select 1:display()\n");
   	printf("select 2:push()\n");
   	printf("select 3:pop()\n");
   	printf("select 4:gettop()\n");
   	printf("input a your select(1-4):\n");
   	scanf("%d",&select);
   	switch(select)
  	{
  		case 1:
  		{
  			display(p);
	 		break;
	 	}
   		case 2:
   		{
   			printf("input a push a value:\n");
	  		scanf("%d",&h);
	  		push(p,h);
	  		display(p);
	  		break;
	  	}
   		case 3:
   		{
   			x1=pop(p);
	    		printf("x1->%d\n",x1);
	    		display(p);
	    		break;
	    	}
   		case 4:
   		{
   			x2=gettop(p);
			printf("x2->%d",x2);
			break;
		}
	 }
}

⌨️ 快捷键说明

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