今天就跟大家聊聊有关C语言如何实现通用数据结构中的通用椎栈,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
为大家分享了C语言实现通用数据结构之通用椎栈的具体代码,具体内容如下
这是在通用链表的基础上实现的椎栈,关于链表的实现参见:C语言实现通用数据结构之通用链表 。
这里所说的椎栈就是指的栈。
注意椎栈中只存储了指针,没有储存实际的数据。
头文件:
/************************* *** File myStack.h **************************/ #ifndef MYSTACK_H_INCLUDED #define MYSTACK_H_INCLUDED #include "myList.h" typedef MyList MyStack; //创建堆栈 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" //创建堆栈 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; //创建并初始化数据 A * data= malloc(sizeof(A)*S); for (int i=0; i< S; i++) { data[i].i=i; data[i].c=(char)('A'+ i); } //创建椎栈 MyStack * stack= createMyStack(); //插入数据 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); //释放数据 free(data); return 0; }
看完上述内容,你们对C语言如何实现通用数据结构中的通用椎栈有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。