栈的链式存储结构及实现

要我说,和单链表的头插入法差不多呵呵

#include<cstdio>
#include<cstring>
#include<cstdlib>

typedef struct StackNode{
	int data;
	struct StackNode *next;
}StackNode,*LinkStackPtr;

typedef struct LinkStack{
	LinkStackPtr top;
	int count;
}LinkStack;

int Push(LinkStack *S,int e){
	LinkStackPtr s = (LinkStackPtr)malloc(sizeof(StackNode));
	s->data = e;
	s->next = S->top;	//类似头插入
	S->top = s;		//更新栈top
	S->count++;
	return 1;
}
int StackEmpty(LinkStack *S){
	if(S->count == 0) return 1;
	return 0;
}
int Pop(LinkStack *S,int *e){
	LinkStackPtr p;
	if(!(StackEmpty(*S))) return 0;
	*e = S->top->data;
	p = S->top;
	S->top = S->top->next;
	free(p);
	S->count--;
	return 1;
}

int main(){
	return 0;
}

  

时间: 2024-11-10 08:54:02

栈的链式存储结构及实现的相关文章

栈的链式存储结构和入栈出栈操作

参考<大话数据结构>P98~99——栈的链式存储结构. 进栈: 出栈: 举个简单的例子: 代码和解释如下(VS2012测试通过): 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 typedef string status;//用书上推荐的status返回是否成功,C++中的模板类string比字符数组char[]更方便 6 7 //栈的结点 8 //包含data,和指向下一个结点

栈及栈的链式存储结构(栈链)

栈:线性结构,后进先出.栈(Stack)是一种特殊的线性表(顺序表,链表)只在表尾进行删除和插入操作. 注意:对于栈来说,表尾称为栈的栈顶(top),表头称为栈底(bottom). 栈也是线性结构的一种特例.与队列不同,他只有一个口,只能从这里读或者写数据,这个口称为栈顶(top).栈是一种先进后出的数据结构.先进来的元素会放入栈底,而后进来的元素被放在它的上面,最后进来的元素的上面的位置,称为栈顶. 栈所提供的操作比一般的线性表要少很多,只提供:初始化.销毁.判断是否为空.求栈的长度.清空栈.

栈的链式存储结构及应用(C、Java代码)

链式存储结构最大的好处就是没有空间的限制,可以通过指针指向将结点像以链的形式把结点链接,我们熟悉的线性表就有链式存储结构. 当然,栈同样有链式存储结构,栈的链式存储结构,简称链栈. 从图片可以看到,和单链表很像,拥有一个头指针top,又称作栈顶指针,所以此时就不再需要单链表里面的头结点了. 对于链栈来说,基本不存在栈满的情况,除非计算机内存已经没有了可使用的空间,如果真的存在,那么计算机系统已经面临着即将死机崩溃的情况,而不是这个链栈是否溢出的问题了. 对于空栈来说,链表的定义是头指针指向NUL

栈(链式存储结构)

堆栈:具有一定操作约束的线性表,只能在一端作插入.删除 具有后入先出的特性(Last In First Out) 分顺序存储结构.链式存储结构两种形式 堆栈的顺序存储结构 通常由一个一维数组和一个栈顶元素变量组成 图解如下: 形式一:构建结构体 0.结构初始化 #define MaxSize ### struct StackNode { ElementType Data[MaxSize]; int top; }; 1.建立空栈 struct StackNode* createStack() {

栈的链式存储结构(C语言实现)

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define OK 1 5 #define ERR 2 6 #define TRUE 1 7 #define FALSE 0 8 9 typedef int status; //定义函数返回的状态,OK & ERR 10 typedef char datatype; //定义栈中每个元素的数据类型,这里暂定为字符型 11 12 typedef struct LinkStack_a

栈的链式存储结构

//1.初始化:(有头结点的情况下) S=(LStack*)malloc(sizeof(LStack));//为栈开辟内存空间 S.next=NULL;//把栈置为空 //2.入栈 p=(LStack*)malloc(sizeof(Lstack));//给入栈的元素分配内存空间 p->data=e;//把元素e插入栈内 p->next=S->next;//使得e成为了栈顶元素 S->next=p;//把移动指针放到栈顶元素的前面 //3.出栈:删除栈顶元素,并用e返回其值 if(S

数据结构 --- 链栈(栈的链式存储结构)

工程目录结构: common.h: 1 //#ifndef __common_h__ 2 //#define __common_h__ 3 4 #define OK 1 5 #define ERROR 0 6 #define TRUE 1 7 #define FALSE 0 8 9 #define MAXSIZE 20 10 11 typedef int Status; //函数的返回结果,OK.ERREO.TRUE.FALSE 12 typedef int ElemType; //结点数据域的

大话数据结构之栈的链式存储结构

#include<iostream> //#include<time.h> //#include <stdlib.h> using namespace std; #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0 typedef int status;//返回的状态值 typedef int elemtype;//节点里数据的类型 //每一个节点的数据结构 typedef struct stacknod

Java数据结构系列之——栈(2):栈的链式存储结构及其操作

package Stack; import LinkList.SinglyLinkList; public class LinkListStack { private SinglyLinkList<Integer> singlyLinkList; /** * 默认构造函数,用于初始化栈 */ public LinkListStack(){ singlyLinkList=new SinglyLinkList<Integer>(); } /* * 压栈操作 */ public void