算法与数据结构之五----顺序栈
来源:互联网 发布:中小企业网络部署方案 编辑:程序博客网 时间:2024/06/14 01:10
/****************************************************************
文件内容:线性表之顺序栈操作
版本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 Seqstack
{
INT32 data[MAX];
INT32 Top;
}seqstack,* Sqstack;
/****************************************************************
函数功能:初始化顺序栈
输入参数: 无
返回值: 顺序的栈的标头指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
作者:HFL
时间:2013-12-29
*****************************************************************/
Sqstack Init_Sqstack()
{
Sqstack s = NULL;
s = (struct Seqstack * )malloc(sizeof (struct Seqstack));
if(NULL)
{
Log("malloc is failed\n");
}
else
{
Log( "malloc is sucessed \n");
}
s->Top = -1;
return s;
}
/****************************************************************
函数功能:判断顺序栈是否为空栈
输入参数: 无
返回值: 顺序的栈的标头指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
作者:HFL
时间:2013-12-29
*****************************************************************/
INT32 Is_Empty_Seqstack(Sqstack q)
{
if (-1 == q->Top )
{
Log("sorry,the stack is NULL");
return 0;
}
else
{
return 1;
}
}
/****************************************************************
函数功能: 判断顺序栈是否已经满
输入参数: 无
返回值: 顺序的栈的标头指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
作者:HFL
时间:2013-12-29
*****************************************************************/
INT32 Is_Full_Seqstack(Sqstack q)
{
if (MAX-1 == q->Top )
{
Log("sorry,the stack is FULL");
return 0;
}
else
{
return 1;
}
}
/****************************************************************
函数功能: 顺序栈入栈
输入参数: 无
返回值: 顺序的栈的标准指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
作者:HFL
时间:2013-12-29
*****************************************************************/
INT32 Push_Sqstack(Sqstack q,INT32 X)
{
if(!Is_Full_Seqstack(q))
{
return -1;
}
q->Top++;
q->data[q->Top] = X;
return q->Top;
}
/****************************************************************
函数功能: 顺序栈出栈
输入参数: 无
返回值: 顺序的栈的标准指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
作者:HFL
时间:2013-12-29
*****************************************************************/
INT32 Pop_Sqstack(Sqstack q )
{
INT32 temp;
if(!Is_Empty_Seqstack(q))
{
return -1;
}
temp = q->data[q->Top];
q->Top--;
return temp;
}
/****************************************************************
函数功能: 顺序栈读栈顶元素
输入参数: 无
返回值: 顺序的栈的标准指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
出栈会修改栈顶指针,而读栈顶元素,不需修改栈顶指针
作者:HFL
时间:2013-12-29
*****************************************************************/
INT32 Read_Sqstack(Sqstack q )
{
INT32 temp;
if(!Is_Empty_Seqstack(q))
{
return -1;
}
temp = q->data[q->Top];
return temp;
}
void main()
{
INT32 i = 0,Ret = -1;
seqstack * s = NULL;
Log("*******************************\n");
Log("* *\n");
Log("* Init seqlist is start ! *\n");
Log("* *\n");
Log("*******************************\n");
s= Init_Sqstack();
if (!s)
{
Log( "Init_seqstack is failed!\n");
}
else
{
Log( "Init_seqstack is sucessed\n");
}
Log("*******************************\n");
Log("* *\n");
Log("* Push seqstack is start ! *\n");
Log("* *\n");
Log("*******************************\n");
for(i=0;i<MAX;i++)
{
Push_Sqstack(s,i+1);
}
Log("*******************************\n");
Log("* *\n");
Log("* Pop seqstack is start ! *\n");
Log("* *\n");
Log("*******************************\n");
for(i=0;i<4;i++)
{
Log("The Pop data is [%d]\n",Pop_Sqstack(s));
}
Log("*******************************\n");
Log("* *\n");
Log("* Read seqstack element ! *\n");
Log("* *\n");
Log("*******************************\n");
Log("The stack top element is %d\n",Read_Sqstack(s));
}
文件内容:线性表之顺序栈操作
版本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 Seqstack
{
INT32 data[MAX];
INT32 Top;
}seqstack,* Sqstack;
/****************************************************************
函数功能:初始化顺序栈
输入参数: 无
返回值: 顺序的栈的标头指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
作者:HFL
时间:2013-12-29
*****************************************************************/
Sqstack Init_Sqstack()
{
Sqstack s = NULL;
s = (struct Seqstack * )malloc(sizeof (struct Seqstack));
if(NULL)
{
Log("malloc is failed\n");
}
else
{
Log( "malloc is sucessed \n");
}
s->Top = -1;
return s;
}
/****************************************************************
函数功能:判断顺序栈是否为空栈
输入参数: 无
返回值: 顺序的栈的标头指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
作者:HFL
时间:2013-12-29
*****************************************************************/
INT32 Is_Empty_Seqstack(Sqstack q)
{
if (-1 == q->Top )
{
Log("sorry,the stack is NULL");
return 0;
}
else
{
return 1;
}
}
/****************************************************************
函数功能: 判断顺序栈是否已经满
输入参数: 无
返回值: 顺序的栈的标头指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
作者:HFL
时间:2013-12-29
*****************************************************************/
INT32 Is_Full_Seqstack(Sqstack q)
{
if (MAX-1 == q->Top )
{
Log("sorry,the stack is FULL");
return 0;
}
else
{
return 1;
}
}
/****************************************************************
函数功能: 顺序栈入栈
输入参数: 无
返回值: 顺序的栈的标准指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
作者:HFL
时间:2013-12-29
*****************************************************************/
INT32 Push_Sqstack(Sqstack q,INT32 X)
{
if(!Is_Full_Seqstack(q))
{
return -1;
}
q->Top++;
q->data[q->Top] = X;
return q->Top;
}
/****************************************************************
函数功能: 顺序栈出栈
输入参数: 无
返回值: 顺序的栈的标准指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
作者:HFL
时间:2013-12-29
*****************************************************************/
INT32 Pop_Sqstack(Sqstack q )
{
INT32 temp;
if(!Is_Empty_Seqstack(q))
{
return -1;
}
temp = q->data[q->Top];
q->Top--;
return temp;
}
/****************************************************************
函数功能: 顺序栈读栈顶元素
输入参数: 无
返回值: 顺序的栈的标准指针
说明:顺序栈是由顺序来实现,所有的操作方式都是跟顺序表一样,只是某些操作堆栈来说是
非法的。
出栈会修改栈顶指针,而读栈顶元素,不需修改栈顶指针
作者:HFL
时间:2013-12-29
*****************************************************************/
INT32 Read_Sqstack(Sqstack q )
{
INT32 temp;
if(!Is_Empty_Seqstack(q))
{
return -1;
}
temp = q->data[q->Top];
return temp;
}
void main()
{
INT32 i = 0,Ret = -1;
seqstack * s = NULL;
Log("*******************************\n");
Log("* *\n");
Log("* Init seqlist is start ! *\n");
Log("* *\n");
Log("*******************************\n");
s= Init_Sqstack();
if (!s)
{
Log( "Init_seqstack is failed!\n");
}
else
{
Log( "Init_seqstack is sucessed\n");
}
Log("*******************************\n");
Log("* *\n");
Log("* Push seqstack is start ! *\n");
Log("* *\n");
Log("*******************************\n");
for(i=0;i<MAX;i++)
{
Push_Sqstack(s,i+1);
}
Log("*******************************\n");
Log("* *\n");
Log("* Pop seqstack is start ! *\n");
Log("* *\n");
Log("*******************************\n");
for(i=0;i<4;i++)
{
Log("The Pop data is [%d]\n",Pop_Sqstack(s));
}
Log("*******************************\n");
Log("* *\n");
Log("* Read seqstack element ! *\n");
Log("* *\n");
Log("*******************************\n");
Log("The stack top element is %d\n",Read_Sqstack(s));
}
0 0
- 算法与数据结构之五----顺序栈
- 数据结构与算法之五大算法
- 数据结构与算法之——顺序栈
- 算法与数据结构之栈的顺序存储
- 算法与数据结构之七----顺序队列
- 算法与数据结构之顺序串
- 数据结构与算法之五 链接列表
- 算法与数据结构之顺序表顺序表
- 数据结构与算法五
- 数据结构与算法系列-栈-顺序栈
- 【数据结构与算法之查找算法一】顺序查找
- 数据结构与算法——顺序栈
- 【数据结构与算法分析】顺序栈
- 数据结构与算法(4)顺序栈
- 【数据结构与算法】排序算法之五:归并排序
- 五、数据结构与算法--栈及队列
- 数据结构与算法之五(递归与递归消除)
- 小菜一步一步学数据结构之(五)顺序栈
- 算法与数据结构之四----双向链表
- 经验总结:HTTP返回505错误小记
- 类和结构的对齐准则
- firefox浏览器安装Flash插件
- SQL常见的概念型面试题
- 算法与数据结构之五----顺序栈
- Single Number
- 软件初学者的9大心得
- ubuntu12.04设置wifi热点给Android设备
- T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他
- DLL编写教程
- 绕过manage.py
- 创业人的起点和圈子问题
- 算法与数据结构之六----链栈