实验3  栈的基本操作

一、实验目的

 熟练应用顺序表和单链表存储结构,实现栈的初始化、入栈、出栈等基本操作。

二、实验软硬件要求

硬件:一台安装了windows操作系统的计算机。

软件:C语言编程工具

  • 实验内容(需写出源程序)
  1. 利用栈的基本操作实现将一个键盘输入的十进制整数转换为对应的八进制数。

v#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define OK 1

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define OVERFLOW -2

typedef int Status;

typedef int Boolean;

typedef int SElemType;

#define STACK_INIT_SIZE 100

#define STACK_INCREMENT 10

//顺序栈

struct SqStack

{

       SElemType *base;

       SElemType *top;

       int stacksize;

};

//构造一个空栈S

Status InitStack(SqStack &S)

{

       S.base = (int*)malloc(STACK_INIT_SIZE*sizeof(int));

       if (!S.base)

              exit(OVERFLOW);

       S.top = S.base;

       S.stacksize = STACK_INIT_SIZE;

       return OK;

}

//检查s栈是否为空栈

Boolean StackEmpty(SqStack S)

{

       if (S.top == S.base)

              return TRUE;

       else

              return FALSE;

}

//插入元素e为新的栈顶元素

Status Push(SqStack &S,int e)

{

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

       {

              S.base = (SElemType*)realloc(S.base,(S.stacksize+STACK_INCREMENT)*sizeof(SElemType));

              if (!S.base)

                     exit (OVERFLOW);

              S.top = S.base + S.stacksize;

              S.stacksize += STACK_INCREMENT;

       }

       *(S.top)++=e;

       return OK;

}

//若栈不为空,删除S的栈顶元素,用e返回其值

Status Pop(SqStack &S,int &e)

{

       if (S.top == S.base)

              return ERROR;

       e = *--S.top;

       return OK;

}

// 对于输入的非负十进制整数,打印输出与其等值的八进制数

void conversion(SqStack S)

{   

    int N,e;

    InitStack(S);

    printf("请输入一个十进制整数:");

    scanf("%d",&N);

    while(N){

        Push(S,N%8);

        N=N/8; 

    }

    printf("转为八进制:");

    while(!StackEmpty(S)){

        Pop(S,e);

        printf("%d",e);

    }

   printf("\n");

}

主函数

int main()

{

       SqStack S;

    conversion(S);

}

结果



我的其他专栏:

单片机原理

模式识别原理

数字电子技术实验

自动控制原理

模拟电子技术

数据结构

 

关注我了解更多

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐