C语言浅谈数据栈结构

原创 2018年04月16日 21:32:44

   

定义:栈是限定仅在表尾进行插入或删除操作的线性表。对栈来说,表尾端有其特殊意义,称为栈顶,相应地,表头端称为栈底。不含元素的空表称为空栈。

栈的本质:栈的修改是按照后进先出的原则进行的;因此,栈又称为后进先出的线性表。

栈的基本操作:

#define TRUE  1 
#define FALSE 0
#define OK    1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define QUEUE_INIT_SIZE 100 //存储空间初始分配量 
#define QUEUEINCREMENT 10 //存储空间分配增量 
typedef int Status;
//队列的定义
typedef struct QNode{
int data;
struct QNode *next;
}QNode,*QueuePtr; 
typedef struct{
QueuePtr front; //头指针 
QueuePtr rear; //尾指针 
}LinkQueue;
//构造一个队列 
Status InitQueue(LinkQueue &Q){
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front) exit(OVERFLOW);
Q.front->next=NULL;
return OK;

//销毁一个队列
Status DestroyQueue(LinkQueue &Q){
while(Q.front){
Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}
return OK;

//判断队列是否为空
bool QueueEmpty(LinkQueue Q){
//返回true或者false 为bool类型 
if(Q.front==Q.rear)
return true;
return false;

//插入一个元素进队列 尾部 
Status EnQueue(LinkQueue &Q,int e){
QueuePtr q;
q=(QueuePtr)malloc(sizeof(QNode));
if(!q) exit(OVERFLOW);
q->data=e;
q->next=NULL; 
Q.rear->next=q;
Q.rear=q ;
return OK;
}
//删除队列头元素并用e返回 
Status DeQueue(LinkQueue &Q,int &e){
QueuePtr q;
if(Q.front==Q.rear) return ERROR; //判断队列是否为空 
q=Q.front->next;
e=Q.front->data;
free(Q.front);
Q.front=q;
return OK;

//若队列不为空,则用e返回队列头元素
Status GetHead(LinkQueue Q,int e){
if(Q.front!=Q.rear) return ERROR;
e=Q.front->data;
return OK;

int main(){

return 0;

}



小弟第一次写博客,不足之处以后修订

c语言之栈结构

1.什么是栈
  • ya_1249463314
  • ya_1249463314
  • 2017-02-20 21:57:27
  • 7205

栈-链式存储结构-c语言

/* 栈 链式存储结构实现 第一个结构体是每一个节点元素, 类似于链表 第二个结构体是用个指针top指向链表的尾部 */ #include #include #define...
  • u010187139
  • u010187139
  • 2015-06-28 18:42:15
  • 1804

数据结构基础(4)C语言实现栈--链式存储(动态栈)

数据结构基础---栈 概念,应用以及C语言实现代码。
  • Davidluo001
  • Davidluo001
  • 2015-06-19 14:14:11
  • 2552

C语言实现数据结构中的链栈

实现方式一# include # include typedef char NodeData;//链栈typedef struct Node{ NodeData data; struct Node *...
  • fullbug
  • fullbug
  • 2007-04-22 16:11:00
  • 5169

数据结构:栈的链式实现(C语言描述)

栈本质上是一个线性表,只不过对线性表的操作进行了限制,只可以在表的一端进行操作(插入、删除元素)。栈是一种是一种实现数据“先进后出”的存储结构,分为静态栈和动态栈,静态栈就是以数组的方式存储数据,动态...
  • lpp0900320123
  • lpp0900320123
  • 2014-03-06 16:37:32
  • 6959

栈-顺序存储结构-c语言

/*栈 顺序存储结构实现*/ #include//定义常量 存储空间的初始化分配 #define MAXSIZE 20 #define ERROR 0 #define OK 1//用typedef定义...
  • u010187139
  • u010187139
  • 2015-06-28 18:36:20
  • 3137

数据结构 括号匹配问题 (栈 C语言)

现在,有一行括号序列,请你检查这行括号是否配对。 输入数据保证只含有"[","]","(",")"四种字符输出如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No ...
  • printf88
  • printf88
  • 2017-10-08 22:59:49
  • 158

C语言函数调用及栈帧结构

一、地址空间与物理内存 (1)地址空间与物理内存是两个完全不同的概念,真正的代码及数据都存在物理内存中。 物理储存器是指实际存在的具体储存器芯片,CPU在操纵物理储存器的时候都把他们当做内存来对待...
  • qq_29403077
  • qq_29403077
  • 2016-11-17 19:10:11
  • 3475

数据结构应用案例——栈结构用于8皇后问题的回溯求解

【说明】本文来自由周世平老师主编的《C语言程序设计》教材。我作为参编人员执笔了第7、8章。“第8章 问题求解与算法”中“8.6.1 回溯法”以8皇后问题的求解为例,介绍了回溯法的解题过程。这个解决方案...
  • sxhelijian
  • sxhelijian
  • 2015-10-05 15:21:37
  • 6606

数据结构(严蔚敏)之三——顺序栈之c语言实现

实验: 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化顺序栈 (2)插入元素 (3)删除栈顶元素 (4)取栈顶元素 (5)遍历顺序栈 (6...
  • GreenHandCGL
  • GreenHandCGL
  • 2015-04-03 00:07:04
  • 2741
收藏助手
不良信息举报
您举报文章:C语言浅谈数据栈结构
举报原因:
原因补充:

(最多只允许输入30个字)