美文网首页
作业帮做-栈结构验证

作业帮做-栈结构验证

作者: 朽木自雕也 | 来源:发表于2018-11-09 01:04 被阅读21次

顺序栈操作验证

实验目的

  1. 掌握栈的顺序存储结构;
  2. 验证栈的操作特性;
  3. 掌握顺序栈的基本操作实现方法。

实验内容

  1. 建立含有若干个元素的顺序栈;
  2. 对已建立的顺序栈实现入栈、出栈、判栈空和判栈满等基本操作。

实验步骤

  1. 用c语言定义一个栈结构体数据结构,结构体内两个参数,数据区Data和top栈顶指针,代码如下
/** 栈模型 */
typedef struct {
    int Data[MAXSTACK];
    int top;
} SqStack, *StackLink;

2、定义运行循环、初始化栈、判空栈、进栈、出栈、至空栈、遍历栈函数声明


/** 运行循环 */
int runloop(void);

/** 初始化栈 */
StackLink init(void);

/** 判空栈 返回值 1 为空栈 0为非空栈 */
int isEmpty(StackLink stack);

/** 进栈 */
void push(StackLink stack, int data);

/** 出栈 */
int pop(StackLink stack);

/** 至空栈 */
void clearStack(StackLink stack);

/** 遍历栈 */
void next(StackLink stack);

3、实现运行循环函数,通过控制台输入进行指定操作


int runloop(void) {
    StackLink link = init();
    int flag = 0;
    printf("\n请选择: -1 退出\n 1 元素进栈\n 2 元素出栈\n 3 遍历所有栈元素\n 4 清空栈\n");
    scanf("%d", &flag);
    do {
        switch (flag) {
            case 1: {
                int a = 0;
                printf("\n请输入进栈元素:");
                scanf("%d",&a);
                push(link, a);
                break;
            }
            case 2: {
                int a = pop(link);
                printf(">>出栈元素:%d",a);
                break;
            }
            case 3: {
                next(link);
                break;
            }
            case 4: {
                clearStack(link);
                break;
            }
            default:
                printf("输入有误");
                break;
        }
        printf("\n请选择:\n -1 退出\n 1 元素进栈\n 2 元素出栈\n 3 遍历所有栈元素\n 4 清空栈\n");
        scanf("%d", &flag);
    } while (flag != -1);
    return flag;
}

4、实现初始化栈 init


StackLink init(void) {
    StackLink stack = (StackLink)malloc(sizeof(SqStack));
    stack->top = -1;
    return stack;
}

5、实现判空栈函数 isEmpty

int isEmpty(StackLink stack) {
    return stack->top == -1 ? 1 : 0;
}

5、实现元素进栈函数 push

void push(StackLink stack, int data) {
    if (stack->top >= MAXSTACK) {
        err(1, "栈已满");
    }
    stack->top = stack->top + 1;
    stack->Data[stack->top] = data;
}

6、实现元素出栈方法pop

int pop(StackLink stack) {
    if (stack->top <= -1) {
        err(1, "栈已空");
    }
    int a = stack->Data[stack->top];
    stack->top = stack->top - 1;
    return a;
}

7、实现清空栈方法 clearStack

void clearStack(StackLink stack) {
    stack->top = -1;
}

7、实现遍历栈方法 next

void next(StackLink stack) {
    int i = stack->top;
    while (i>-1) {
        printf(">>%d  ",stack->Data[i]);
        --i;
    }
}

8、在main函数中实现调用

int main(int argc, const char * argv[]) {
    return runloop();
}

9、运行程序,测试结果

第一次运行

请选择: -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
1

请输入进栈元素:2

请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
1

请输入进栈元素:3

请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
1

请输入进栈元素:4

请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
1

请输入进栈元素:10

请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
3
>>10  >>4  >>3  >>2  
请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
4

请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
3

请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈

第二次运行

请选择: -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
1

请输入进栈元素:50

请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
1

请输入进栈元素:50

请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
1

请输入进栈元素:20

请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
3
>>20  >>50  >>50  
请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
2
>>出栈元素:20
请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
2
>>出栈元素:50
请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
2
>>出栈元素:50
请选择:
 -1 退出
 1 元素进栈
 2 元素出栈
 3 遍历所有栈元素
 4 清空栈
2
栈结构: 栈已空: Undefined error: 0

相关文章

  • 作业帮做-栈结构验证

    顺序栈操作验证 实验目的 掌握栈的顺序存储结构; 验证栈的操作特性; 掌握顺序栈的基本操作实现方法。 实验内容 建...

  • 作业帮做-栈结构验证回文数

    实验目的 利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Right”,否则输出 “Wrong”。例如...

  • 数据结构与算法(五,栈和栈的应用,递归思想)

    栈 栈是只在尾部做添加和删除的线性表 栈的顺序结构方式 栈的顺序存储结构是使用数组实现的,Stack继承了Vect...

  • 顺序存储结构栈 共享栈 链式存储结构栈

  • 数据结构学习 栈 队列 链表 2019-04-08

    数据结构 datawhile课程学习 作业笔记 任务一 栈 1.用数组实现一个顺序栈 Valid Parenthe...

  • 数据结构之栈的链式存储结构

    之前写了栈的顺序存储结构,对栈的定义和操作进行了说明 数据结构之栈的顺序存储结构 现在接着写栈的链式存储结构 栈的...

  • 记录数据结构与算法的学习之路 -----003.栈

    1.栈结构 栈在逻辑结构中,属于线性结构,从图1可以看出,出栈和入栈都是只能通过栈顶进行操作,所以可以得出栈的读取...

  • 数据结构之 栈

    栈结构 链式栈 一.栈结构体 1构建空栈 2栈置空 3判断栈空 4获取栈顶 5入栈 6出栈 7便利栈 二.链式栈 ...

  • python数据结构教程 Day3

    本节重点: 线性结构介绍 栈结构介绍 栈结构ADT实现 栈在问题中的应用 一、线性结构 定义: 线性结构是一种有序...

  • 数据结构之---栈

    数据结构之---栈 顺序栈 内部采用数组实现 结构图; 定义结构体: 函数声明 进栈以及出栈 图示: 其余操作 链...

网友评论

      本文标题:作业帮做-栈结构验证

      本文链接:https://www.haomeiwen.com/subject/svxnxqtx.html