IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言实现顺序栈 -> 正文阅读

[C++知识库]C语言实现顺序栈

C语言实现顺序栈

main.c

#include "stack.h"

void test();

ElementType dataArray[] = {
    {1,"侠客行"},
    {2,"将进酒"},
    {3,"神来之笔"},
    {4,"青莲剑歌"}
};


int main()
{
    test();
    return 0;
}


void test(){
    SeqStack  seqstack;
    ElementType * element = (ElementType *)malloc(sizeof(SeqStack));
    InitSeqStack(&seqstack);
    for (int i=0;i<4;i++){
        PushSeqStack(&seqstack,dataArray[i]);
        printf("当前入栈:%d\t%s.\n",dataArray[i].id,dataArray[i].name);
    }
    PopSeqStack(&seqstack,element);
    printf("当前出栈:%d\t%s.\n",element->id,element->name);
}

stack.h

#ifndef STACK_H_INCLUDED
#define STACK_H_INCLUDED

#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 255
#define TRUE 1
#define FALSE 0

typedef struct {
    int id;
    char * name;
}ElementType;

//定义栈的顺序存储方式
typedef struct SeqStack{
    ElementType elements[MAX_SIZE];     //顺序栈中用来存放数据元素的数组
    int top;                            //栈顶(数组中元素的下标),如果为-1则证明栈为空
    int length;                         //当前栈的元素个数
}SeqStack;

//初始化栈
void InitSeqStack(SeqStack * seqstack);

//元素入栈,返回插入结果:true或false
int PushSeqStack(SeqStack * seqstack,ElementType element);

//出栈,返回出栈结果:true或false
int PopSeqStack(SeqStack * seqstack,ElementType * element);

//清空栈
void ClearSeqStack(SeqStack * seqstack);

//返回栈顶元素
void GetTopElement(SeqStack * seqstack,ElementType * element);

#endif // STACK_H_INCLUDED

stack.c

#include "stack.h"

//初始化栈
void InitSeqStack(SeqStack * seqstack){
    seqstack->top = -1;
    seqstack->length = 0;
}

//元素入栈,返回插入结果,true或false
int PushSeqStack(SeqStack * seqstack,ElementType element){
    if(seqstack->top == MAX_SIZE-1){
        printf("栈已满.");
        return FALSE;
    }
    seqstack->top++;           //栈顶指针+1,以便加入新的元素
    seqstack->elements[seqstack->top] = element;
    seqstack->length++;
    return TRUE;
}

//出栈,返回出栈结果:true或false
int PopSeqStack(SeqStack * seqstack,ElementType * element){
    if (seqstack->top == -1){
        printf("空栈,无法出栈.\n");
    }
    *element = seqstack->elements[seqstack->top]; //放回栈顶指向的元素
    seqstack->length--;
    seqstack->top--;
    return TRUE;
}

//清空栈
void ClearSeqStack(SeqStack * seqstack){
    seqstack->length = 0;
    seqstack->top = -1;
}

//返回栈顶元素
void GetTopElement(SeqStack * seqstack,ElementType * element){
    if (seqstack->top == 1){
        printf("空栈.");
        element = NULL;
        return;
    }
    *element = seqstack->elements[seqstack->top];
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 16:54:12  更:2021-10-03 16:56:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 20:51:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码