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

作业帮做-栈结构验证

作者: 朽木自雕也 | 来源:发表于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
    

    相关文章

      网友评论

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

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