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)參見: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í)現(xiàn)靜態(tài)通訊錄的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的靜態(tài)通訊錄,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定幫助,需要的可以參考一下2022-07-07C++實(shí)現(xiàn)LeetCode(51.N皇后問(wèn)題)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(51.N皇后問(wèn)題),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07利用Matlab制作一款刮刮樂(lè)抽獎(jiǎng)特效
七夕節(jié)還不知道送啥,教你用MATLAB制作一款刮刮樂(lè)抽獎(jiǎng)特效,讓她的手氣決定她的禮物。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03淺談C++中的mutable和volatile關(guān)鍵字
下面小編就為大家?guī)?lái)一篇淺談C++中的mutable和volatile關(guān)鍵字。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06