C語言實現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用椎棧
更新時間:2021年11月26日 10:56:04 作者:swwlqw
這篇文章主要為大家詳細介紹了C語言實現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用椎棧,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C語言實現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用椎棧的具體代碼,供大家參考,具體內(nèi)容如下
這是在通用鏈表的基礎(chǔ)上實現(xiàn)的椎棧,關(guān)于鏈表的實現(xiàn)參見:C語言實現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用鏈表 。
這里所說的椎棧就是指的棧。
注意椎棧中只存儲了指針,沒有儲存實際的數(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);
}
測試文件
/*************************
*** 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]);
//測試刪除
while(myListGetSize(stack))
{
A * pp = myStackRemove(stack);
printf("%d[%c] ", pp->i, pp->c);
}
puts("");
//釋放椎棧
freeMyStack(stack);
//釋放數(shù)據(jù)
free(data);
return 0;
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺談C++中的mutable和volatile關(guān)鍵字
下面小編就為大家?guī)硪黄獪\談C++中的mutable和volatile關(guān)鍵字。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06

