데이터 구조 작업 의 코드 - 스 택 의 순서 구현
43103 단어 데이터 구조 - 작업
#include
#include
typedef int SElemType;
typedef int Status;
#define INIT_SIZE 100
#define STACKINCREMENT 10
#define Ok 1
#define Error 0
#define True 1
#define False 0
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
} SqStack;
//
Status InitStack(SqStack *s)
{
s->base = (SElemType *)malloc(INIT_SIZE * sizeof(SElemType));
if(!s->base)
{
puts(" !");
return Error;
}
s->top = s->base;
s->stacksize = INIT_SIZE;
return Ok;
}
//
Status ClearStack(SqStack *s)
{
s->top = s->base;
return Ok;
}
//
Status StackEmpty(SqStack *s)
{
if(s->top == s->base)
return True;
else
return False;
}
//
Status Destroy(SqStack *s)
{
free(s->base);
s->base = NULL;
s->top = NULL;
s->stacksize=0;
return Ok;
}
//
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 = (SElemType *)realloc(s->base, (s->stacksize + STACKINCREMENT) * sizeof(SElemType));
if(!s->base)
{
puts(" !");
return Error;
}
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;
--s->top;
*e = *(s->top);
return Ok;
}
//
Status StackTraverse(SqStack *s,Status(*visit)(SElemType))
{
SElemType *b = s->base;// base top ,
SElemType *t = s->top;
while(t > b)
visit(*b++);
printf("
");
return Ok;
}
Status visit(SElemType c)
{
printf("%d ",c);
return Ok;
}
int main()
{
SqStack a;
SqStack *s = &a;
SElemType e;
InitStack(s);
int n;
puts(" :");
scanf("%d", &n);
while(n--)
{
int m;
scanf("%d", &m);
Push(s, m);
}
StackTraverse(s, visit);
puts("");
puts("8 :");
Push(s, 8);
StackTraverse(s, visit);
puts("");
Pop(s, &e);
printf(" :%d
", e);
printf(" , , , %d
", *s->top);//
Destroy(s);
return 0;
}
#include
#include
#include
using namespace std;
typedef int SElemType;
typedef int Status;
#define INIT_SIZE 100
#define STACKINCREMENT 10
#define Ok 1
#define Error 0
#define True 1
#define False 0
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
} SqStack;
//
Status InitStack(SqStack *s)
{
s->base = (SElemType *)malloc(INIT_SIZE * sizeof(SElemType));
if(!s->base)
{
puts(" !");
return Error;
}
s->top = s->base;
s->stacksize = INIT_SIZE;
return Ok;
}
//
Status ClearStack(SqStack *s)
{
s->top = s->base;
return Ok;
}
//
Status StackEmpty(SqStack *s)
{
if(s->top == s->base)
return True;
else
return False;
}
//
Status Destroy(SqStack *s)
{
free(s->base);
s->base = NULL;
s->top = NULL;
s->stacksize=0;
return Ok;
}
//
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 = (SElemType *)realloc(s->base, (s->stacksize + STACKINCREMENT) * sizeof(SElemType));
if(!s->base)
{
puts(" !");
return Error;
}
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;
--s->top;
*e = *(s->top);
return Ok;
}
//
Status StackTraverse(SqStack *s,Status(*visit)(SElemType))
{
SElemType *b = s->base;// base top ,
SElemType *t = s->top -1;
while(t >= b)
visit(*t--);
// visit(*b++);
printf("
");
return Ok;
}
Status visit(SElemType c)
{
printf("%d ",c);
return Ok;
}
void menu()
{
cout<<" menu:"<<endl;
cout<<"1. "<<endl;
cout<<"2. "<<endl;
cout<<"3. "<<endl;
cout<<"4.menu"<<endl;
cout<<"0. "<<endl;
}
void preface()
{
printf(" *********************************************
"
" * *
"
" * : *
"
" * *
"
" * *
"
" *********************************************
"
"
"
);
}
int main()
{
SqStack a;
SqStack *s = &a;
SElemType e;
InitStack(s);
preface();
menu();
int choose;
int x;
while(true)
{
cout<<"
:";
cin>>choose;
int k=0;
switch(choose)
{
case 1:
printf(" :");
cin>>x;
printf(" %d :",x);
while(x--)
{
cin>>e;
Push(s,e);
}
// printf(" !
");
break;
case 2:
Pop(s,&e);
printf(" :%d
", e);
break;
case 3:
StackTraverse(s, visit);
printf(" !
");
break;
case 4:
menu();
break;
case 0:
k=1;
break;
default:
printf(" !");
break;
}
if(k) break;
}
Destroy(s);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
링크 구현 대기 열 - - 데이터 구조 작업작업 코드 2: - 작업 code 1 의 기능 을 모방 하여 교과서 의 링크 구현 대기 열 을 완전 하 게 실현 합 니 다. - main 함수 호출 을 통 해 우호 적 인 인간 과 컴퓨터 의 상호작용 입력 이 필요 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.