• 大小: 2KB
    文件类型: .c
    金币: 2
    下载: 0 次
    发布日期: 2024-02-04
  • 语言: C/C++
  • 标签: 数据结构  栈操作  

资源简介

假设给定的整数栈 初始状态为空,栈的最大容量为100.从标准输入中输入一组栈操作,按操作顺序输出出栈元素序列。栈操作:1表示入栈操作,后跟一个整数(不为1/0和-1)为入栈元素,0表示出栈操作,-1表示操作结束。从标准输入读取一组栈操作,入栈的整数和表示栈操作的整数之间都以一个空格分隔,输出出栈元素序列。

资源截图

代码片段和文件信息

#include 
#include 
#include 
typedef struct Node
{
    int data;
    struct Node *pNext;
}Node;

typedef struct Stack
{
    Node * pTop;
    Node * pButtom;
}Stack;


void init_stack(Stack * ps);//初始化栈
int is_empty(Stack *ps);//判断是否为空栈
void push_stack(Stack *ps int val);
int pop_stack(Stack *ps int *pVal);

int main(int argc char *argv[])
{
    int count = 0;
    int flg = 0;
    int inputOperation[100] = {0};

    //测试数据:1 3 1 5 1 7 0 0 1 8 0 1 12 1 13 0 0 0 0 1 90 1 89 0 -1
    int *p = inputOperation;
    /*printf(“请输入栈操作序列:\n“);*/
    do //输入操作序列
    {
        scanf(“%d“&flg);
        inputOperation[count++] = flg;
    }while(flg != -1);

    Stack s;//创建一个链栈
    init_stack(&s);//并初始化该链栈

    p = inputOperation;

    while(*p != -1)
    {
        if (*p == 1)
        {
            if (*(p+1) == 1 || *(p+1) == 0 || *(p+1) == -1)//整数不能和操作数相同
            {
                printf(“操作序列输入错误!\n“);
                break;
            }
            push_stac

评论

共有 条评论