顺序栈(C语言版)

//SeqStack.h

</pre><pre name="code" class="cpp">/*
stack:Last In First Out
*/

//1.定义顺序栈的结构
typedef struct stack
{
	DATA data[SIZE+1];
	int top;		//栈顶
}SeqStack;

//2.初始化栈
SeqStack *SeqStackInit()
{
	SeqStack *p;
	if(p=(SeqStack *)malloc(sizeof(SeqStack)))
	{
		p->top=0;		//设置栈顶为0
		return p;		//返回指向栈顶的指针
	}
	return NULL;
} 

//释放申请的内存
void SeqStackFree(SeqStack *s)
{
	if(s)
		free (s);
}

//3.判断栈的状态
int SeqStackIsEmpty(SeqStack *s)	 	//判断栈是否为空
{
	return (s->top==0);
}

void SeqStackClear(SeqStack *s)			//清空栈
{
	s->top=0;
}

int SeqStackIsFull(SeqStack *s)			//判断栈是否已满
{
	return (s->top==SIZE);
}

//4.入栈操作
int SeqStackPush(SeqStack *s,DATA data)
{
	if((s->top+1)>SIZE)			//栈顶上一个位置超过最大容量
	{
		printf("栈溢出\n");
		return 0;
	}
	s->data[++s->top]=data;
	return 1;
}

//5.出栈操作
DATA SeqStackPop(SeqStack *s)
{
	if(s->top==0)			//判断栈是否为空
	{
		printf("栈为空\n");
		exit(0);
	}
	return (s->data[s->top--]);
}

//6.获取栈顶元素
DATA SeqStackPeek(SeqStack *s)
{
	if(s->top==0)			//判断栈是否为空
	{
		printf("栈为空\n");
		exit(0);
	}
	return (s->data[s->top]);
}

//SeqStackTest.c

#include <stdio.h>
#include <stdlib.h>
#define SIZE 50

typedef struct
{
	char name[15];
	int age;
}DATA;
#include "SeqStack.h"

int main(int argc, char *argv[]) {
	SeqStack *stack;
	DATA data,data1;
	stack = SeqStackInit();
	printf("入栈操作:\n");
	printf("输入3组姓名 年龄进行入栈操作:\n");
	int i;
	for(i=0;i<3;i++)
	{
		scanf("%s%d",data.name,&data.age);
		SeqStackPush(stack,data);
	}

	printf("出栈操作:\n");
	for (i = 0; i < 3; ++i)
	{
		data1=SeqStackPop(stack);
		printf("出栈的数据是(%s,%d)\n",data1.name,data1.age);
	}

	SeqStackFree(stack);

	return 0;
}

//该程序测试结果

入栈操作:
输入3组姓名 年龄进行入栈操作:
xxx 21
ccc 20
bbb 19
出栈操作:
出栈的数据是(bbb,19)
出栈的数据是(ccc,20)
出栈的数据是(xxx,21)

--------------------------------
Process exited with return value 0
Press any key to continue . . .
时间: 2024-12-05 05:17:19

顺序栈(C语言版)的相关文章

【小白成长撸】--顺序栈(C语言版)

1 // 顺序栈.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h"//test1.0--栈表仅限Int类型 5 #include <stdio.h> 6 7 #define true 1 8 #define false 0 9 10 typedef struct stack_type 11 { 12 int stack[100];//最大容纳100个元素 13 int top; 14 }stacktype; 15 16 in

【小白成长撸】--链栈(C语言版)

1 // 链栈.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include <stdio.h> 6 #include <stdlib.h>//malloc的头文件 7 8 typedef struct line_stack//栈包装 9 { 10 int x; 11 struct line_stack *next; 12 }link; 13 14 void pushes(link **top, int

链栈-C语言版

#include<stdio.h> #include<iostream> #include<stdlib.h> using namespace std; typedef struct stacknode                           ///结构节点的定义 { int data; struct stacknode *next; }StackNode,*LinkStack; int StackEmpty(LinkStack top)          

从两端生长的双向栈-C语言版

<pre name="code" class="cpp">[cpp] 简单双端栈的应用 源文件部分: #include <stdio.h> #define MaxStackSize 100 typedef int DataType; int len,x; #include"SeqStack.h" int main() { SeqStack myStack; int i,n,m; StackInitiate(&myS

顺序栈的栈基本操作(C语言版)

由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址  但是这种用法好像C并不支持 ,C++才支持,所以用 C语言写就需要使用指针 代码如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define STACK_INIT_SIZE 100//储存空间初始分配量 4 #define STACKINCREMENT 1

顺序栈的c语言实现

Football on Table 题意:一些杆上有人,人有一个宽度,然后现在有一个球射过去,要求出球不会碰到任何人的概率 思路:计算出每根杆的概率,之后累乘,计算杆的概率的时候,可以先把每块人的区间长度再移动过程中会覆盖多少长度累加出来,然后(1?总和/可移动距离)就是不会碰到的概率 代码: #include <stdio.h> #include <string.h> #include <math.h> const double eps = 1e-8; int t,

顺序栈用C语言实现

从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表: 但从数据类型角度来看,它们是和线性表大不相同的两种重要的抽象数据类型. 顺序栈,即栈的顺序存储结构是用一组地址连续的存储单元依次存放自栈顶到栈顶的数据元素 typedef struct { int * base; //栈底指针,在栈构造之前和摧毁之后,base的值为NULL int * top; //栈顶指针,在非空栈始终指向栈顶元素的下一个位置 int stacksize; //

数据结构(java语言描述)顺序栈的使用(两个大数相加)

利用http://www.cnblogs.com/xleer/p/5289661.html中对顺序栈以及栈的进本方法的定义,实现超过整数上限的两个数的加法计算. 算法: package stack;/********************************************************************** * @author sch ********利用栈,计算两个大数的和.大数的值超过int存储的范围******************************

顺序栈操作--数据结构(C++)版

最近学习数据结构,一开始接触感觉好难,颓废了一段时间,后来又重新翻开学习,突然感觉到很大的兴趣.对这些代码的运用都有了 一些新的认识.下面简单的讲述下最新学到的顺序栈,不知道大家学习的时候会不会有感觉,书上写的那么简单,但是我写的都是不对,不是这里有错就是那里有错,最后还是攻克了,心理慢慢地成就感. 题目大概:输入一串整数,如果 该数不等于-1,就进栈,若是等于-1,则输出栈顶整数并出栈.同时算法给出应对异常的情况. 代码实现 #include <stdio.h>#include <st