最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言數(shù)組棧實(shí)現(xiàn)模板

 更新時(shí)間:2018年12月24日 14:52:55   作者:wwxy261  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言數(shù)組棧實(shí)現(xiàn)模板,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言數(shù)組棧實(shí)現(xiàn)模板的具體代碼,供大家參考,具體內(nèi)容如下

SeqStack.h

#pragma once
#define MAX_SIZE 1024
 
typedef struct SEQSTACK
{
 void* data[MAX_SIZE];
 int size;
}SeqStack;
 
SeqStack* Init_SeqStack();      // 初始化棧
void Push_SeqStack(SeqStack* stack, void* data); // 入棧
void* Top_SeqStack(SeqStack* stack);    // 返回棧頂元素
void Pop_SeqStack(SeqStack* stack);    // 出棧
int IsEmpty(SeqStack* stack);     // 判斷是否為空
int Size_SeqStack(SeqStack* stack);    // 返回棧中元素的個(gè)數(shù)
void Clear_SeqStack(SeqStack* stack);   // 清空棧
void FreeSpace_SeqStack(SeqStack* stack);  // 銷毀棧

SeqStack.cpp 函數(shù)實(shí)現(xiàn)

#include "SeqStack.h"
#include <stdio.h>
#include <stdlib.h>
 
SeqStack* Init_SeqStack()
{
 SeqStack* stack = (SeqStack*)malloc(sizeof(SeqStack));
 for (int i = 0; i < MAX_SIZE; i++)
 {
 stack->data[i] = NULL;
 }
 stack->size = 0;
 
 return stack;
}
 
void Push_SeqStack(SeqStack* stack, void* data)
{
 if (stack == NULL)
 return;
 if (stack->size == MAX_SIZE)  // 棧為滿
 return;
 if (data == NULL)
 return;
 
 stack->data[stack->size] = data;
 stack->size++;
}
 
void* Top_SeqStack(SeqStack* stack)    // 返回棧頂元素,不彈出
{
 if (stack == NULL)
 return NULL;
 if (stack->size == 0)
 return NULL;
 
 return stack->data[stack->size - 1];
}
 
void Pop_SeqStack(SeqStack* stack)    // 出棧
{
 if (stack == NULL)
 return;
 
 if (stack->size == 0)
 return;
 stack->data[stack->size - 1] = NULL;
 stack->size--;
}
 
int IsEmpty(SeqStack* stack)     // 判斷是否為空
{
 if (stack == NULL)
 return -1;
 
 if (stack->size == 0)
 return 1;
 
 return 0;
 
}
 
int Size_SeqStack(SeqStack* stack)
{
 if (stack == NULL)
 return -1;
 
 return stack->size;
}
 
void Clear_SeqStack(SeqStack* stack)
{
 if (stack == NULL)
 return;
 
 for (int i = 0; i < stack->size; i++)
 {
 stack->data[i] = NULL;
 }
 
 stack->size = 0;
}
 
void FreeSpace_SeqStack(SeqStack* stack)
{
 if (stack == NULL)
 return;
 
 free(stack);
}

數(shù)組棧測(cè)試程序

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "SeqStack.h"
 
typedef struct PERSON
{
 char name[64];
 int age;
}Person;
 
int main()
{
 SeqStack* stack = Init_SeqStack();  // 創(chuàng)建棧
 
 Person p1, p2, p3, p4, p5;
 strcpy(p1.name, "aaa");
 strcpy(p2.name, "bbb");
 strcpy(p3.name, "ccc");
 strcpy(p4.name, "ddd");
 strcpy(p5.name, "eee");
 
 p1.age = 10;
 p2.age = 20;
 p3.age = 30;
 p4.age = 40;
 p5.age = 50;
 
 Push_SeqStack(stack, &p1);     // 入棧
 Push_SeqStack(stack, &p2);
 Push_SeqStack(stack, &p3);
 Push_SeqStack(stack, &p4);
 Push_SeqStack(stack, &p5);
 
 while (Size_SeqStack(stack) > 0)
 {
 Person* person = (Person*)Top_SeqStack(stack);
 printf("Name:%s Age:%d\n", person->name, person->age);
 Pop_SeqStack(stack);
 }
 
 // 釋放內(nèi)存
 FreeSpace_SeqStack(stack);
 system("pause");
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++詳細(xì)分析線程間的同步通信

    C++詳細(xì)分析線程間的同步通信

    線程間不通信的話,每個(gè)線程受CPU的調(diào)度,沒(méi)有任何執(zhí)行上的順序可言,線程1和線程2是根據(jù)CPU調(diào)度算法來(lái)的,兩個(gè)線程都有可能先運(yùn)行,是不確定的,線程間的運(yùn)行順序是不確定的,所以多線程程序出問(wèn)題,難以復(fù)現(xiàn),本章我們就來(lái)了解線程間的同步通信
    2022-05-05
  • C++ 簡(jiǎn)單實(shí)現(xiàn)MFC ListControl 點(diǎn)擊列頭排序

    C++ 簡(jiǎn)單實(shí)現(xiàn)MFC ListControl 點(diǎn)擊列頭排序

    這篇文章主要介紹了C++ 簡(jiǎn)單實(shí)現(xiàn)MFC ListControl 點(diǎn)擊列頭排序的相關(guān)資料,需要的朋友可以參考下
    2015-06-06
  • C語(yǔ)言讀取文件流的相關(guān)函數(shù)用法簡(jiǎn)介

    C語(yǔ)言讀取文件流的相關(guān)函數(shù)用法簡(jiǎn)介

    這篇文章主要介紹了C語(yǔ)言讀取文件流的相關(guān)函數(shù)用法簡(jiǎn)介,包括fread()函數(shù)和feof()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • C++之IO類,文件輸入輸出,string流練習(xí)題

    C++之IO類,文件輸入輸出,string流練習(xí)題

    這篇文章主要介紹了C++實(shí)現(xiàn)IO類的幾道數(shù)組練習(xí)題,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C語(yǔ)言計(jì)算器的3種實(shí)現(xiàn)方法代碼

    C語(yǔ)言計(jì)算器的3種實(shí)現(xiàn)方法代碼

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言計(jì)算器的3種實(shí)現(xiàn)方法,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一的參考借鑒價(jià)值,需要的朋友可以參考下
    2007-01-01
  • C++設(shè)置事件通知線程工作的方法

    C++設(shè)置事件通知線程工作的方法

    這篇文章主要介紹了C++設(shè)置事件通知線程工作的方法,是Windows應(yīng)用程序設(shè)計(jì)中非常實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10
  • c++ 連接兩個(gè)字符串實(shí)現(xiàn)代碼 實(shí)現(xiàn)類似strcat功能

    c++ 連接兩個(gè)字符串實(shí)現(xiàn)代碼 實(shí)現(xiàn)類似strcat功能

    c++ 連接兩個(gè)字符串實(shí)現(xiàn)代碼 實(shí)現(xiàn)類似strcat功能,需要的朋友可以參考下
    2012-05-05
  • C++中cin>>n的返回值

    C++中cin>>n的返回值

    這篇文章主要介紹了C++中cin>>n的返回值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C語(yǔ)言之平衡二叉樹詳解

    C語(yǔ)言之平衡二叉樹詳解

    平衡二叉樹是具有平衡屬性的有序二叉樹,本文主要介紹了C語(yǔ)言中的平衡二叉樹,具有一定的參考價(jià)值,需要的小伙伴可以參考閱讀
    2023-04-04
  • C語(yǔ)言軟件spi虛擬總線中間層設(shè)計(jì)詳解

    C語(yǔ)言軟件spi虛擬總線中間層設(shè)計(jì)詳解

    這篇文章主要為大家介紹了C語(yǔ)言軟件spi虛擬總線中間層設(shè)計(jì)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01

最新評(píng)論

大竹县| 凤冈县| 新郑市| 习水县| 福清市| 长岭县| 建平县| 鄄城县| 花莲县| 五寨县| 南岸区| 绍兴市| 雅江县| 阿瓦提县| 内江市| 神农架林区| 湖口县| 建宁县| 阜宁县| 宣威市| 双峰县| 辽源市| 炎陵县| 邓州市| 崇文区| 甘南县| 高邮市| 平乡县| 安远县| 海淀区| 腾冲县| 孟津县| 大庆市| 隆子县| 合阳县| 台北县| 新源县| 库尔勒市| 商水县| 滦南县| 尉犁县|