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

📄 栈.txt

📁 数据结构课堂实验 集中了数据结构,线性表,连表,栈,队列,二叉树,图,排序算法,查找算法的实现
💻 TXT
字号:
#include "stdio.h"
#include "alloc.h"
#include "bios.h"
#include "conio.h"
#define  OK  1
#define  ERROR  0
#define  OVERFLOW  -2
#define  TRUE  1
#define  FALSE  0
typedef  int  Status;
#define Init_Size 100
#define INCR 20
typedef int ElemType;
typedef struct
{ElemType *Elem;
 int Top;
 int StackSize;
}SqStack;

Status InitStack(SqStack &S)
{  S.Elem=(ElemType *)malloc(Init_Size*sizeof(ElemType));
 if(!S.Elem) return  OVERFLOW;
   S.Top=0;
   return OK;
}

Status GetTop(SqStack S, ElemType &e)
{if (S.Top==0)  return ERROR;
 e=S.Elem[S.Top-1];
 return OK;
 }

Status Push(SqStack &S, ElemType e)	/*入栈*/
{  if(S.Top==S.StackSize)
   {  S.Elem=(ElemType*)malloc((S.StackSize+INCR)*sizeof(ElemType));
      if(!S.Elem) return(OVERFLOW);
      S.StackSize+=INCR;
}
S.Elem[S.Top++]=e;
  return OK;
}

Status Pop(SqStack &S,ElemType &e)	/*出栈*/
 {if (!S.Top)
     {printf("stack is empty when poping\n");return(ERROR);}
  e=S.Elem[--S.Top];
  return OK;
 }

void StackOutput(SqStack S)	/*遍历栈并且输出*/
 {  int i;
    for(i=0;i<S.Top;i++)
       printf("%d  ",S.Elem[i]);
    printf("\n");
   }

int StackLength(SqStack S)	/*求栈长度*/
{return S.Top;}

Status StackEmpty(SqStack S)	/*栈的判空*/
{if (S.Top) return FALSE;
else return TRUE;}

Status DestroyStack(SqStack S)	/*销毁栈*/
{free(S.Elem);
return OK;}

void ClearStack(SqStack &S)	/*清空栈*/
{S.Top=NULL;}


   main()
   { SqStack S;
     ElemType e;
     int i;
     clrscr();
     InitStack(S);
     for(i=1;i<=5;i++)   Push(S,2*i+1);
     if (!StackEmpty(S)) printf("\nNot Empty with Stack");
     printf("\nStack Length=%d\n",StackLength(S));
     StackOutput(S);
     Pop(S, e);     StackOutput(S);
     Push(S,111);     StackOutput(S);
     Push(S,222);     StackOutput(S);
     Pop(S, e);     StackOutput(S);
     ClearStack(S);
     if (StackEmpty(S)) printf ("Empty with the Stack");
     DestroyStack(S);
     getch();
     }

⌨️ 快捷键说明

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