10 진법 과 임 의 진법 전환 (10 이내) - 데이터 구조 작업 실현
60902 단어 데이터 구조 - 작업
1. 순서 스 택 은 10 진 전환 2 진 을 실현 합 니 다.
#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;
}
int main()
{
SqStack a;
SqStack *s = &a;
SElemType e,n;
InitStack(s);
printf(" :");
cin>>n;
printf("
%d :",n);
InitStack(s);
while(n)
{
e = n%2;
Push(s,e);
n/=2;
}
StackTraverse(s,visit);
puts("");
Destroy(s);
return 0;
}
2. 체인 스 택 은 10 진법 전환 2 진법 을 실현 한다.
#include
#define ElemType int
#define SElemType int
#define Status int
#define ERROR 0
#define OK 1
using namespace std;
typedef struct StackNode{//
ElemType data;
struct StackNode *next;
}StackNode,*LinkStack;
LinkStack S,p;
Status InitStack(LinkStack &S)//
{
S=NULL;
return OK;
}
Status Push(LinkStack &S,SElemType &e)// e
{
p = new StackNode; //
p->data = e; // e
p->next = S; //
S = p; // p;
return OK;
}
Status Pop(LinkStack &S,SElemType &e)// , e
{
if(S == NULL) return ERROR; //
e = S->data; // e
p = S; // p ,
S = S->next; //
delete p; //
return OK; //
}
Status GetTop(LinkStack S)
{
if(S != NULL)
return S->data;
}
void display(struct StackNode* head)//
{
struct StackNode *current;
current = head;
if(current!= NULL)
{
printf("Stack: ");
do
{
printf("%d ",current->data);
current = current->next;
}
while (current!= NULL);
printf("
");
}
else
{
printf("The Stack is empty!
");
}
}
int empty(struct StackNode* head)
{
return head == NULL ? 1 : 0;
}
int main()
{
int n,e,x;
printf(" :");
cin>>n;
printf("
%d :",n);
InitStack(S);
while(n)
{
e = n%2;
Push(S,e);
n/=2;
}
while(!empty(S))
{
Pop(S,e);
printf("%d",e);
}
puts("");
return 0;
}
3. 순서 스 택 은 10 진법 전환 임 의 진법 (10 이내) 을 실현 합 니 다.
#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;
}
int main()
{
printf(
" *******************************************
"\
" * *
"\
" * n x *
"\
" * n x *
"\
" * *
"\
" *******************************************
"\
);
SqStack a;
SqStack *s = &a;
SElemType e,n;
InitStack(s);
printf(" :");
int m;
cin>>n;
printf(" (2-9):");
cin>>m;
printf("%d %d :",n,m);
InitStack(s);
while(n)
{
e = n%m;
Push(s,e);
n/=m;
}
StackTraverse(s,visit);
puts("");
Destroy(s);
return 0;
}
4. 체인 스 택 은 10 진법 전환 임 의 진법 (10 이내) 을 실현 한다.
#include
#define ElemType int
#define SElemType int
#define Status int
#define ERROR 0
#define OK 1
using namespace std;
typedef struct StackNode{//
ElemType data;
struct StackNode *next;
}StackNode,*LinkStack;
LinkStack S,p;
Status InitStack(LinkStack &S)//
{
S=NULL;
return OK;
}
Status Push(LinkStack &S,SElemType &e)// e
{
p = new StackNode; //
p->data = e; // e
p->next = S; //
S = p; // p;
return OK;
}
Status Pop(LinkStack &S,SElemType &e)// , e
{
if(S == NULL) return ERROR; //
e = S->data; // e
p = S; // p ,
S = S->next; //
delete p; //
return OK; //
}
Status GetTop(LinkStack S)
{
if(S != NULL)
return S->data;
}
void display(struct StackNode* head)//
{
struct StackNode *current;
current = head;
if(current!= NULL)
{
printf("Stack: ");
do
{
printf("%d ",current->data);
current = current->next;
}
while (current!= NULL);
printf("
");
}
else
{
printf("The Stack is empty!
");
}
}
int empty(struct StackNode* head)
{
return head == NULL ? 1 : 0;
}
int main()
{
printf(
" *******************************************
"\
" * *
"\
" * n x *
"\
" * n x *
"\
" * *
"\
" *******************************************
"\
);
int n,e,x;
printf(" :");
int m;
cin>>n;
printf(" (2-9):");
cin>>m;
printf("%d %d :",n,m);
InitStack(S);
while(n)
{
e = n%m;
Push(S,e);
n/=m;
}
while(!empty(S))
{
Pop(S,e);
printf("%d",e);
}
puts("");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
순서 표 구현 대기 열 - - 데이터 구조 작업작업 코드 1: - 수업 시간 에 주 는 순서 표 형식 을 대기 열 순서 보충 (코드 를 보 냈 습 니 다) 을 실현 합 니 다. - 키보드 로 삽입 가능 - 키보드 로 삭제 실현 - 좋 은 인간 과 컴퓨터 의 상호...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.