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

📄 stack_c.txt

📁 Data Structure Ebook
💻 TXT
字号:
#include<stdio.h>
#include<malloc.h>
#include<conio.h>

#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OK 1
#define Status int
#define EQUAL 1
#define OVERFLOW -1
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10

struct STU{
  char name[20];
  char stuno[10];
  int age;
  int score;
};
typedef struct STU SElemType;

struct STACK
{
  SElemType *base;
  SElemType *top;
  int stacksize;
};

typedef struct STACK Sqstack;

Status InitStack(SqStack &S);
Status DestroyStack(SqStack &S);
Status ClearStack(SqStack &S);
Status StackEmpty(SqStack S);
int StackLength(SqStack S);
Status GetTop(SqStack S,SElemType &e);
Status Push(SqStack &S,SElemType e);
Status Pop(SqStack &S,SElemType &e);
Status StackTraverse(SqStack S,Status (*visit)());

Status InitStack(SqStack &S)
{
  S.base=(SelemType *)malloc(STACK_INIT_SIZE *sizeof(ElemType));
  if(!S.base)exit(OVERFLOW);
  S.top=S.base;
  S.stacksize=STACK_INI_SIZE;
  return OK;
}

Status DestroyStack(SqStack &S);
{

}

Status ClearStack(SqStack &S);
{
  S.top=S.base;
}

Status StackEmpty(SqStack S);
{
  if(S.top==S.base) return TRUE;
  else
    return FALSE;
}

int StackLength(SqStack S);
{
  int i;
  SElemType *p;
  i=0;
  p=S.top;
  while(p!=S.base)
    {p++;
     i++;
    }
}

Status GetTop(SqStack S,SElemType &e);
{
  if(S.top==S.base) return ERROR;
  e=*(S.top-1);
  return OK;
}

Status Push(SqStack &S,SElemType e);
{
  if(S.top - s.base>=S.stacksize)
   {
     S.base=(ElemType *) realloc(S.base,
	    (S.stacksize + STACKINCREMENT) * sizeof(ElemType));
     if(!S.base)exit(OVERFLOW);
     S.top=S.base+S.stacksize;
     S.stacksize+=STACKINCREMENT;
   }
  *S.top++=e;
  return OK;
}

Status Pop(SqStack &S,SElemType &e);
{
  if(S.top==S.base) return ERROR;
  e=*--S.top;
  return OK;
}

Status StackTraverse(SqStack S,Status (*visit)());
{
}

⌨️ 快捷键说明

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