卧槽我队友呢


私信TA

用户名:371357329

访问量:1216

签 名:

等  级
排  名 52262
经  验 270
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 北京化工大学
专  业

  自我简介:

TA的其他文章

解题思路:

注意事项:

参考代码:

#include<bits/stdc++.h>

#include<iostream>

#include<algorithm>

#include<string>

#include<iomanip>

#include<map>

#include<stack>

#include<queue>

#include<set>

#include<bitset>

#include<memory.h>

#include<time.h>

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

//#include<stdbool.h>

#include<math.h>

using namespace std;

typedef long long LL;

const int OK=1;

const int ERROR=0;

const int INFEASIBLE=-1;

const int STACK_INIT_SIZE=100;//存储空间初始分配量

const int STACKINCREMENT=10;//存储空间分配增量

typedef int Status;

typedef int SElemType;

Status OutputInt(SElemType e);

Status OutputChar(SElemType e);

using namespace std;

typedef struct

{

    SElemType *base;//栈构造之前和销毁之后,base的值为NULL

    SElemType *top;//栈顶指针

    int stacksize;//当前已分配的存储空间,以元素为单位


    Status InitStack()//构造一个空栈S

    {

        base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

        if(!base)exit(OVERFLOW);//存储分配失败

        top=base;

        stacksize=STACK_INIT_SIZE;

        return OK;

    }//InitStack


    Status DestroyStack()//销毁栈S,S不再存在

    {

        free(base);

        base=NULL;

        top=NULL;

        stacksize=0;

        return OK;

    }//DestroyStack


    Status ClearStack()//把S置为空栈

    {

        top=base;

        return OK;

    }//ClearStack


    Status StackEmpty()//若S为空栈,则返回true,否则返回false

    {

        if(top==base)return true;

        return false;

    }//StackEmpty


    int StackLength()//返回S的元素个数,即栈的长度

    {

        return top-base;

    }//StackLength


    Status GetTop(SElemType &e)//若栈不空,则用e返回S的栈顶元素,并返回OK,否则返回ERROR

    {

        if(top==base)return ERROR;

        e=*(top-1);

        return OK;

    }//GetTop


    Status Push(SElemType e)//插入元素e为新的栈顶元素

    {

        if(top-base>=stacksize)//栈满,追加存储空间

        {

            base=(SElemType *)realloc(base,(stacksize+STACKINCREMENT)*sizeof(SElemType));

            if(!base)exit(OVERFLOW);//存储分配失败

            top=base+stacksize;

            stacksize+=STACKINCREMENT;

        }

        (*top++)=e;

        return OK;

    }//Push


    Status Pop(SElemType &e)//若栈不空,则删除S的栈顶元素,并用e返回其值,并返回OK,否则返回ERROR

    {

        if(top==base)return ERROR;

        e=(*--top);

        return OK;

    }//Pop


    Status StackTraverse(int p)//从栈底到栈顶依次对栈中每个元素调用函数visit().一旦visit()失败则操作失败

    {

        SElemType *i=base;

        Status (*visit)(SElemType);

        if(p==1)visit=OutputInt;

        else if(p==0)visit=OutputChar;

        while(top>i)

            visit(*i++);

        puts("");

        return OK;

    }//StackTraverse

}SqStack;


Status OutputInt(SElemType e)

{

    printf("%d ",e);

    return OK;

}

Status OutputChar(SElemType e)

{

    printf("%c",e);

    return OK;

}





void Conversion(int n)//对于输入的任意一个非负十进制整数n,打印输出与其等值的八进制数

{

    typedef int SElemType;


    SqStack S;

    SElemType e;

    S.InitStack();//构造空栈


    while(n)

    {

        S.Push(n%8);

        n/=8;

    }

    while(!S.StackEmpty())

    {

        S.Pop(e);

        printf("%d",e);

    }

    puts("");


    S.DestroyStack();

}

int main()

{    int n;

while (scanf("%d",&n)!=EOF)

    {Conversion(n);

    }

}


 

0.0分

0 人评分

  评论区

  • «
  • »