链栈的调用。

#include<stdio.h>
#include"LinkStack.cpp"
int main(void)
	{
	int a,b,c,f,i,x;
	LinkStack L1; 
	L1=*Initsack();
	while(1)
	{
	printf("\t\t**********************************************************\t\t\n");
	printf("\t\t* * 链栈的代码应用\t\t\t\t\t\t*\n");
	printf("\t\t* * 0.退出      \t\t\t\t\t\t*\n");
	printf("\t\t* * 1.入栈      \t\t\t\t\t\t*\n");
	printf("\t\t* * 2.出栈      \t\t\t\t\t\t*\n");
	printf("\t\t* * 3.取栈顶元素\t\t\t\t\t\t*\n");
	printf("\t\t* * 4.判断栈是否为空\t\t\t\t\t\t*\n");
	printf("\t\t* * 5.求栈的深度\t\t\t\t\t\t*\n");
	printf("\t\t* * 6.清空栈    \t\t\t\t\t\t*\n");
	printf("\t\t* * 7.打印栈    \t\t\t\t\t\t*\n");
	printf("\t\t**********************************************************\t\t\n");
	printf("\n\n\n输入要进行的操作:");
	scanf("%d",&a);
	system("cls");
	switch(a){
		case 0:{
			exit(0);
			break;
		}
		case 1:{
			printf("输入要入栈的元素的个数:");
			scanf("%d",&x); 
			printf("\n\n\n输入要入栈的%d个元素:\n",x);
			for(i=1;i<=x;i++)
			{
			scanf("%d",&b);
			Push(&L1,b);
			}
			break;
		}
		case 2:{
			printf("请输入要出站的个数:");
			scanf("%d",&x);
			for(i=1;i<=x;i++)
			{
			c=Pop(&L1,&b);
			if(c==0)
			{
			printf("\n\n\n出栈错误(栈已为空)!\n\n\n");
			break;
			}
			printf("\n出栈的元素为%d\n\n",b);
			}
			break;
		}
		case 3:{
			c=GetTop(&L1,&b);
			if(c==0)
			{
				printf("\n\n\n取栈顶元素错误!\n\n\n");
				break;
			}
			printf("\n\n\n栈顶元素为%d\n\n\n",b);
			break;
		}
		case 4:{
			c=StackEmpty(&L1);
			if(c==0)
			{
				printf("\n\n\n栈不为空!\n\n\n");
				break;
			}
			else
			printf("\n\n\n栈为空!\n\n\n");
			break;
		}
		case 5:{
			c=StackLenth(&L1);
			printf("\n\n\n栈的深度为%d\n\n\n",c);
			break;
		}
		case 6:{
			ClearStack(&L1);
			printf("\n\n\n栈已清空!\n\n\n"); 
			break;
		}
		case 7:{
			PrintStack(&L1); 
			break;
		}
		default :{
			printf("\n\n\n系统暂无此功能!\n\n\n");
			break;
		}
		
	}
		printf("按任意键回车后继续........"); 
        f=getch();
    	system("cls");
		
	}	
	}

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h> 
#define STACK_INITSIZE 10
#define STACK_INCREAMENT 2  
#define ERROR 0
#define OK 1
typedef int ElemType; 
typedef struct node
{
	ElemType data;
	struct node *next;
}LinkStack;
/*****************************链栈的基本操作定义*****************************/





LinkStack *Initsack()									/**链栈的初始化**/
{
	LinkStack *S;
	S=(LinkStack *)malloc(sizeof(LinkStack));
	S->next=NULL;
	return S;
 } 
 int Push(LinkStack *S,ElemType e)						/**进栈操作**/
 {
 	LinkStack *p;
 	p=(LinkStack *)malloc(sizeof(LinkStack));
 	p->data=e;
 	p->next=S->next;
 	S->next=p;
 	return OK;
 }
 int Pop(LinkStack *S,ElemType *e) 						/**出栈操作**/
 {
 	LinkStack *p;
 	if(S->next==NULL)
 	return ERROR;
 	p=S->next;
 	*e=p->data;
 	S->next=p->next;
 	free(p);
 	return OK;
  } 
  int GetTop(LinkStack *S,ElemType *e)					/**取栈顶元素**/
  {
  	LinkStack *p;
  	if(S->next==NULL)
  	return 0;
  	p=S->next;
  	*e=p->data;
  	return OK;
  }
  int StackEmpty(LinkStack *S)							/**判断链栈是否为空**/
  {
  	if(S->next==NULL)
  	return 1;
  	else
  	return 0;
   } 
   int StackLenth(LinkStack *S)							/**判断链栈深度**/
   {
   		int a=0;
   		LinkStack *p;
   		p=S->next;
   		while(p!=NULL)
   		{
   			a++;
   			p=p->next;
		   }
		return a;
	} 
	int ClearStack(LinkStack *S)									/**清空栈**/
	{
		LinkStack *p,*top; 
		top=S->next;
		S->next=NULL;
		while(top!=NULL)
		{
			p=top;
			top=top->next;
			free(p);
		}
	 } 
	int PrintStack(LinkStack *S)									/*打印栈*/
	{
		int a;
		a=StackLenth(S);
		printf("\n\n\n\n栈中共有%d个元素:\n\n\n\n",a) ; 
		LinkStack *p;
		p=S->next;
		while(p!=NULL)
		{
			printf("%d\t",p->data);
			p=p->next;
		}
	 } 
//int main(void)
//	{
//	int a,b,c,f,i,x;
//	LinkStack L1; 
//	L1=*Initsack();
//	while(1)
//	{
//	printf("\t\t**********************************************************\t\t\n");
//	printf("\t\t* * 链栈的代码应用\t\t\t\t\t\t*\n");
//	printf("\t\t* * 0.退出      \t\t\t\t\t\t*\n");
//	printf("\t\t* * 1.入栈      \t\t\t\t\t\t*\n");
//	printf("\t\t* * 2.出栈      \t\t\t\t\t\t*\n");
//	printf("\t\t* * 3.取栈顶元素\t\t\t\t\t\t*\n");
//	printf("\t\t* * 4.判断栈是否为空\t\t\t\t\t\t*\n");
//	printf("\t\t* * 5.求栈的深度\t\t\t\t\t\t*\n");
//	printf("\t\t* * 6.清空栈    \t\t\t\t\t\t*\n");
//	printf("\t\t* * 7.打印栈    \t\t\t\t\t\t*\n");
//	printf("\t\t**********************************************************\t\t\n");
//	printf("\n\n\n输入要进行的操作:");
//	scanf("%d",&a);
//	system("cls");
//	switch(a){
//		case 0:{
//			exit(0);
//			break;
//		}
//		case 1:{
//			printf("输入要入栈的元素的个数:");
//			scanf("%d",&x); 
//			printf("\n\n\n输入要入栈的%d个元素:\n",x);
//			for(i=1;i<=x;i++)
//			{
//			scanf("%d",&b);
//			Push(&L1,b);
//			}
//			break;
//		}
//		case 2:{
//			printf("请输入要出站的个数:");
//			scanf("%d",&x);
//			for(i=1;i<=x;i++)
//			{
//			c=Pop(&L1,&b);
//			if(c==0)
//			{
//			printf("\n\n\n出栈错误(栈已为空)!\n\n\n");
//			break;
//			}
//			printf("\n出栈的元素为%d\n\n",b);
//			}
//			break;
//		}
//		case 3:{
//			c=GetTop(&L1,&b);
//			if(c==0)
//			{
//				printf("\n\n\n取栈顶元素错误!\n\n\n");
//				break;
//			}
//			printf("\n\n\n栈顶元素为%d\n\n\n",b);
//			break;
//		}
//		case 4:{
//			c=StackEmpty(&L1);
//			if(c==0)
//			{
//				printf("\n\n\n栈不为空!\n\n\n");
//				break;
//			}
//			else
//			printf("\n\n\n栈为空!\n\n\n");
//			break;
//		}
//		case 5:{
//			c=StackLenth(&L1);
//			printf("\n\n\n栈的深度为%d\n\n\n",c);
//			break;
//		}
//		case 6:{
//			ClearStack(&L1);
//			printf("\n\n\n栈已清空!\n\n\n"); 
//			break;
//		}
//		case 7:{
//			PrintStack(&L1); 
//			break;
//		}
//		default :{
//			printf("\n\n\n系统暂无此功能!\n\n\n");
//			break;
//		}
//		
//	}
//		printf("按任意键回车后继续........"); 
//        f=getch();
//    	system("cls");
//		
//	}	
//	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四维空间中的未知点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值