C語(yǔ)言實(shí)現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用椎棧
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用椎棧的具體代碼,供大家參考,具體內(nèi)容如下
這是在通用鏈表的基礎(chǔ)上實(shí)現(xiàn)的椎棧,關(guān)于鏈表的實(shí)現(xiàn)參見(jiàn):C語(yǔ)言實(shí)現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用鏈表 。
這里所說(shuō)的椎棧就是指的棧。
注意椎棧中只存儲(chǔ)了指針,沒(méi)有儲(chǔ)存實(shí)際的數(shù)據(jù)。
頭文件:
/************************* *** File myStack.h **************************/ #ifndef MYSTACK_H_INCLUDED #define MYSTACK_H_INCLUDED #include "myList.h" typedef MyList MyStack; //創(chuàng)建堆棧 MyStack * createMyStack(); //釋放堆棧 void freeMyStack(MyStack * stack); //加入 void myStackAdd(MyStack* const stack, void* const data); //刪除 void* myStackRemove(MyStack * const stack); //取得堆棧頭 void* myStackGetTop(const MyStack * const stack); #endif // MYSTACK_H_INCLUDED
源文件
/*************************
*** File myStack.c
**************************/
#include "myStack.h"
//創(chuàng)建堆棧
MyStack * createMyStack()
{
return createMyList();
}
//釋放堆棧
void freeMyStack(MyStack * stack)
{
freeMyList(stack);
}
//加入
void myStackAdd(MyStack* const stack, void* const data)
{
myListInsertDataAtFirst(stack, data);
}
//刪除
void* myStackRemove(MyStack * const stack)
{
return myListRemoveDataAtFirst(stack);
}
//取得堆棧頭
void* myStackGetTop(const MyStack * const stack)
{
return myListGetDataAtFirst(stack);
}
測(cè)試文件
/*************************
*** File main.c
*** test for MyStack
**************************/
#include <stdio.h>
#include <stdlib.h>
#include "myStack.h"
typedef struct a
{
int i;
char c;
} A;
int main()
{
const int S =10;
//創(chuàng)建并初始化數(shù)據(jù)
A * data= malloc(sizeof(A)*S);
for (int i=0; i< S; i++)
{
data[i].i=i;
data[i].c=(char)('A'+ i);
}
//創(chuàng)建椎棧
MyStack * stack= createMyStack();
//插入數(shù)據(jù)
myStackAdd(stack, &data[0]);
myStackAdd(stack, &data[2]);
myStackAdd(stack, &data[6]);
//測(cè)試刪除
while(myListGetSize(stack))
{
A * pp = myStackRemove(stack);
printf("%d[%c] ", pp->i, pp->c);
}
puts("");
//釋放椎棧
freeMyStack(stack);
//釋放數(shù)據(jù)
free(data);
return 0;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言深入刨析數(shù)據(jù)結(jié)構(gòu)之棧與鏈棧的設(shè)計(jì)與應(yīng)用
- 詳解C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之棧
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)進(jìn)階之棧和隊(duì)列的實(shí)現(xiàn)
- C語(yǔ)言編程數(shù)據(jù)結(jié)構(gòu)棧與隊(duì)列的全面講解示例教程
- C語(yǔ)言編程數(shù)據(jù)結(jié)構(gòu)的棧和隊(duì)列
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之使用鏈表模擬棧的實(shí)例
- C語(yǔ)言中棧的結(jié)構(gòu)和函數(shù)接口的使用示例
相關(guān)文章
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之單鏈表的實(shí)現(xiàn)
鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。本文將用C語(yǔ)言實(shí)現(xiàn)單鏈表,需要的可以參考一下2022-06-06
C語(yǔ)言中利用封裝好的函數(shù)實(shí)現(xiàn)英文字母的大小寫轉(zhuǎn)換
這篇文章主要介紹了C語(yǔ)言中利用封裝好的函數(shù)實(shí)現(xiàn)英文字母的大小寫轉(zhuǎn)換,需要的朋友可以參考下2017-10-10
C++使用MySQL-Connector/C++連接MySQL出現(xiàn)LNK2019錯(cuò)誤的解決方法
這篇文章主要介紹了C++使用MySQL-Connector/C++連接MySQL出現(xiàn)LNK2019錯(cuò)誤的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
C++高并發(fā)內(nèi)存池的整體設(shè)計(jì)和實(shí)現(xiàn)思路
這篇文章主要介紹了C++高并發(fā)內(nèi)存池的整體設(shè)計(jì)和實(shí)現(xiàn)思路詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07
利用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字游戲
這篇文章主要為大家詳細(xì)介紹了利用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-02-02

