c语言怎么编写一个基本的顺序栈

以下是一个基本的顺序栈的C语言实现示例:#include #include #define MAX_SIZE 100typedef struct {int data[MAX_SIZE];int top;} Stack;void initStack(Stack *s) {s->top = -1;}int isEmpty(Stack *s) {return

以下是一个基本的顺序栈的C语言实现示例:

#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 100

typedef struct {
    int data[MAX_SIZE];
    int top;
} Stack;

void initStack(Stack *s) {
    s->top = -1;
}

int isEmpty(Stack *s) {
    return s->top == -1;
}

int isFull(Stack *s) {
    return s->top == MAX_SIZE - 1;
}

void push(Stack *s, int value) {
    if (isFull(s)) {
        printf("Stack is full\n");
        return;
    }
    s->top++;
    s->data[s->top] = value;
}

int pop(Stack *s) {
    if (isEmpty(s)) {
        printf("Stack is empty\n");
        return -1;
    }
    int value = s->data[s->top];
    s->top--;
    return value;
}

int peek(Stack *s) {
    if (isEmpty(s)) {
        printf("Stack is empty\n");
        return -1;
    }
    return s->data[s->top];
}

int main() {
    Stack stack;
    initStack(&stack);

    push(&stack, 10);
    push(&stack, 20);
    push(&stack, 30);

    printf("Top element: %d\n", peek(&stack));

    printf("Popped element: %d\n", pop(&stack));
    printf("Popped element: %d\n", pop(&stack));
    printf("Popped element: %d\n", pop(&stack));

    printf("Is stack empty: %s\n", isEmpty(&stack) ? "true" : "false");

    return 0;
}

这段代码定义了一个基本的顺序栈数据结构,包括初始化栈、判断栈是否为空或满、入栈、出栈、获取栈顶元素的操作。在main函数中,进行了栈的初始化、入栈、出栈等操作,并打印了一些信息。

您可以根据自己的需求对该代码进行修改和扩展。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/877917.html

(0)
派派
上一篇 2024-02-19
下一篇 2024-02-19

相关推荐

  • ftp为什么不能保存密码(ftp服务器密码忘了如何办)

    ftp为什么不能保存密码,ftp服务器密码忘了如何办 内容导航: FTP为什么不能保存密码 FTP命令的密码输入不进是怎么回事 ftp用户名和密码在哪里找的到 关于FTP保存密码的…

    2022-05-17
    0
  • 会议检索是什么意思(sci会议和sci期刊区别)

    sci会议和sci期刊区别是什么?sci会议和sci期刊的主要区别其实就是会议和期刊的区别,期刊论文和会议论文一直都是学术论文发表的两种主要类型,发表载体不同,发表难度和要求也是有所不同的。期刊是定期出版的出版物,学术会议是定期举行或者不定期

    2021-09-14
    0
  • c#中math.pow函数的作用是什么

    在 C# 中,Math.Pow() 函数用于返回指定数字的指定次幂。它接受两个参数:一个是底数(base),另一个是指数(exponent)。Math.Pow() 函数的定义如下:public static double Pow(double x, double y);其中,x 是要计算幂的底数,y 是要计算的指数。该函数返回 x 的 y 次幂。例如,Math.Pow(2, 3) 将返回 8,因

    2024-03-15
    0
  • Ubuntu中怎么使用Snap包管理器

    在Ubuntu中,Snap包管理器是预装的,可以使用以下命令来使用Snap包管理器:安装Snap包管理器:sudo apt updatesudo apt install snapd搜索Snap包:snap find 安装Snap包:sudo snap install 卸载Snap包:sudo snap remove <package-nam

    2024-04-28
    0
  • navicat中如何导入frm文件

    在 Navicat 中导入 .frm 文件的步骤如下:打开 Navicat 软件,并连接到要导入 .frm 文件的数据库。在左侧导航栏中选择相应的数据库,在菜单栏中点击“工具”选项。在弹出的工具菜单中选择“数据传输向导”。在数据传输向导中,选择“从文件导入”。在文件导入设置中,选择“MySQL 表结构文件(.frm)”作为源文件类型。点击“添加文件”按钮选择要导入的 .frm 文件,并设置目标数据

    2024-03-29
    0
  • 在CentOS中如何列出所有已安装的软件包

    在CentOS中,可以使用以下命令来列出所有已安装的软件包:rpm -qa该命令会列出所有已安装的软件包的名称。如果您只想查看特定软件包的信息,可以在命令后添加软件包的名称,如下所示:rpm -qa | grep package_name其中,”package_name”是您要查找的软件包的名称。

    2024-04-25
    0

发表回复

登录后才能评论