首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >算法与数据结构之六----链栈

算法与数据结构之六----链栈

作者头像
用户4148957
发布2022-06-14 08:11:43
发布2022-06-14 08:11:43
2280
举报
文章被收录于专栏:C/C++与音视频C/C++与音视频

/**************************************************************** 文件内容:线性表之链栈操作 版本V1.0 作者:HFL 时间:2013-12-22  *****************************************************************/  #include<stdio.h> #include<stdlib.h> //#define RELEASE_VERSION  //release版本开关 //#define TRIDiTION /*inlude<malloc.h> stdlib.h 包含malloc.h*/ #ifdef RELEASE_VERSION #define  Log  #else #define  Log  printf #endif /*为了提高程序的可移植性,千万不能使用裸露的数据类型*/ #ifndef UINT32  typedef unsigned int UINT32 ; #endif #ifndef INT32  typedef  int  INT32 ; #endif #define MAX 12 typedef struct Node { INT32 data;     struct Node * next; }linkstack, * Lkstack; Lkstack Top;// 栈顶指针,相当于头指针,由于栈没有遍历和查找概念,故不引入头指针 /**************************************************************** 函数功能:创建一个节点                         输入参数:  无 返回值:节点的指针  作者:HFL  时间:2013-12-22  *****************************************************************/ Lkstack Creat_Node(INT32 X) {  Lkstack s;       s=(struct Node *)malloc(sizeof(Node));  if(NULL==s) { Log(" sorry,Malloc is failed\n"); } else { Log(" Malloc is successed!\n"); s->data = X; } return s; } /**************************************************************** 函数功能:初始化链栈                        输入参数:  无 返回值: 链栈的栈顶指针指针  作者:HFL  时间:2013-12-29  *****************************************************************/   Lkstack Init_Linkstack() { Top = NULL; return Top; } /**************************************************************** 函数功能:判断链栈是否为空栈                        输入参数:  无 返回值: 链栈的标头指针  说明:链栈是由链来实现,所有的操作方式都是跟链表一样,只是某些操作堆栈来说是 非法的。 作者:HFL  时间:2013-12-29  *****************************************************************/  INT32 Is_Empty_Linkstack() {   if (NULL == Top )   {  Log("sorry,the stack is NULL");  return 0;   }   else   {     return 1;   } } /**************************************************************** 函数功能: 链栈入栈                       输入参数:  无 返回值: 链的栈的标准指针 说明:链栈是由链来实现,所有的操作方式都是跟链表一样,只是某些操作堆栈来说是 非法的。 作者:HFL  时间:2013-12-29  *****************************************************************/  Lkstack Push_Linkstack(INT32 X) { Lkstack s; s = Creat_Node(X); s->next = Top ;     Top = s; return Top; } /**************************************************************** 函数功能: 链栈出栈                       输入参数:  无 返回值: 链的栈的标准指针 说明:链栈是由链来实现,所有的操作方式都是跟链表一样,只是某些操作堆栈来说是 非法的。 作者:HFL  时间:2013-12-29  *****************************************************************/  INT32  Pop_Linkstack() {   INT32 temp; Lkstack s; if(!Is_Empty_Linkstack()) {      return -1; }     temp = Top->data; s = Top;     Top = Top->next; free (s); return temp; } /**************************************************************** 函数功能: 链栈读栈顶元素                       输入参数:  无 返回值: 链的栈的标准指针 说明:链栈是由链来实现,所有的操作方式都是跟链表一样,只是某些操作堆栈来说是 非法的。 出栈会修改栈顶指针,而读栈顶元素,不需修改栈顶指针 作者:HFL  时间:2013-12-29  *****************************************************************/ INT32  Read_Linkstack( ) {   INT32 temp; if(!Is_Empty_Linkstack()) {      return -1; }     temp = Top->data;     return temp; }  void main() {   INT32 i ; Log("*******************************\n"); Log("*                             *\n"); Log("*   Init LinkStack is start !   *\n"); Log("*                             *\n"); Log("*******************************\n"); Init_Linkstack(); Log("*******************************\n"); Log("*                             *\n"); Log("*   Push LinkStack is start !   *\n"); Log("*                             *\n"); Log("*******************************\n"); for(i=0;i<MAX;i++) { Push_Linkstack(i+1); } Log("*******************************\n"); Log("*                             *\n"); Log("*   Pop Linkstack is start !   *\n"); Log("*                             *\n"); Log("*******************************\n"); for(i=0;i<MAX-5;i++) {  Log("The Pop element is %d\n",Pop_Linkstack()); } Log("*******************************\n"); Log("*                             *\n"); Log("*   Read Linkstack element !   *\n"); Log("*                             *\n"); Log("*******************************\n");    Log("The stack top element is %d\n",Read_Linkstack()); }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档