`

数据结构--栈

 
阅读更多
#include <iostream>
#include <malloc.h>
#include<conio.h>

//定义节点
typedef char ElemType;
typedef struct Node{
	ElemType data;			
	struct Node *next;	
} Stack;

/*
*栈S指向一个没有数据的节点
*/
void Init(Stack *&S){
	S=(Stack *)malloc(sizeof(Stack));//分配头结点
	S->next=NULL;
}

/*
*销毁栈
*/
void Destroy(Stack *&S){
	Stack *p=S->next;
	while (p!=NULL){
		free(S);
		S=p;
		p=p->next;
	}
}

int Length(Stack *s){
	int i=0;
	s=s->next;
	while (s!=NULL){
		i++;s=s->next;
	}
	return i;
}

int StackEmpty(Stack *s){
	return(s->next==NULL);
}

/*
*将数据压栈,压到头结点下面
*/
void Push(Stack *&S,ElemType e){
	Stack *p=(Stack *)malloc(sizeof(Stack));
	p->data=e;
	p->next=S->next;
	S->next=p;
}

/*
*数据出栈,出栈的数据放在e里面
*/
int Pop(Stack *&S,ElemType &e){
	Stack *p;
	if (S->next==NULL)		//栈空的情况
		return 0;
	p=S->next;				//p指向第一个数据结点
	e=p->data;
	S->next=p->next;
	free(p);
	return 1;
}

/*
*获取顶端数据,数据放在e里面
*/
int GetTop(Stack *S,ElemType &e){
	if (S->next==NULL)
		return 0;
	e=S->next->data;
	return 1;
}

void Display(Stack *S){
	S=S->next;
	while (S!=NULL){
		std::cout<<S->data;
		S=S->next;
	}
	std::cout<<std::endl;
}

int main(){
	Stack *L;
	char e;
	Init(L);
	Push(L,'a');
	Push(L,'b');
    Display(L);
	Pop(L,e);
	std::cout<<e<<std::endl;
	Display(L);
	Push(L,'c');
	Display(L);
	Pop(L,e);
	Pop(L,e);
	Display(L);
	Push(L,'d');
	Display(L);
	getche();
	return 1;
}

 运行结果:

ba

b

a

ca

 

d

分享到:
评论

相关推荐

    数据结构--栈和数组--思维导图.pdf

    "数据结构--栈和数组--思维导图.pdf" 数据结构是计算机科学中的一个重要概念,栈和数组是数据结构中两个非常重要的概念。本文将对栈和数组进行详细的解释,并提供相关的思维导图。 栈是一个只允许在一端进行插入和...

    数据结构--栈 的C语言实现.zip

    在众多的数据结构中,栈是一种非常基础且重要的结构,它遵循“后进先出”(Last In First Out,简称LIFO)的原则。在本资料“数据结构--栈的C语言实现.zip”中,我们将探讨栈的概念、操作以及如何用C语言来实现它。 ...

    数据结构--栈的实现(链栈)--带头节点

    数据结构--栈的实现(链栈)--带头节点。

    数据结构--栈与队列.cpp

    数据结构--栈与队列.cpp

    数据结构--栈与队列的应用.doc

    数据结构--栈与队列的应用 栈是一种常用的数据结构,它是一种后进先出的数据结构,即最后入栈的元素最先出栈。栈的应用非常广泛,如解决递归问题、实现深度优先搜索、实现括号匹配等。 在栈的应用中,我们需要设计...

    Educoder题目:数据结构-栈基本运算的实现及其应用答案解析.md

    Educoder题目:数据结构-栈基本运算的实现及其应用答案解析.md

    数据结构--栈的基本操作

    在这个主题中,我们专注于栈(Stack)这一特殊的数据结构。栈被称为“后进先出”(Last In, First Out,简称LIFO)的数据结构,因为它的工作原理类似于日常生活中的堆叠物品:最后放入的物品最先被取出。下面我们将...

    数据结构--栈--实现算法

    在这个主题中,我们将专注于栈(Stack)这一特殊的数据结构,以及它的实现算法。栈被誉为“后进先出”(Last In, First Out,简称LIFO)的数据结构,意味着最后存入的数据将首先被取出。 栈在许多计算问题中都有...

    数据结构-栈.zip_数据结构-栈

    标题“数据结构-栈.zip_数据结构-栈”暗示了这个压缩包文件主要包含了关于数据结构中栈的讲解和示例。通过解压并分析其中的文件,我们可以进一步了解栈的基本概念和操作。 “栈测试.cpp”很可能是一个用C++编写的源...

    数据结构--栈的链式实现

    栈是一种特殊的数据结构,被称为“后进先出”(LIFO)结构,这意味着最后加入栈的元素将首先被移除。在本主题中,我们将探讨如何使用链式结构来实现栈,并了解其基本操作。 首先,我们需要理解链式栈的概念。与数组...

    数据结构---栈和队列之共享栈(C语言)

    数据结构---栈和队列之共享栈(C语言)完整代码,可以运行

    数据结构-栈的实现代码(C语言版).rar

    数据结构 -- C语言版 -- 栈的部分实现代码(栈的实现、栈的应用),详细介绍参考数据结构--栈的系列博文。链接为:https://blog.csdn.net/songshuai0223/category_9742561.html。

    数据结构--栈和队列

    讲述数据结构中关于栈和队列的ppt信息,讲述栈的定义,销毁等问题

    CS221 数据结构-全套 PPT 课件

    CS221 数据结构-全套 PPT 课件 1-引言.ppt 2-线性表.pdf 2-线性表.ppt 3-栈.pdf 3-栈.ppt 4-队列.pdf 4-队列.ppt 数据结构-第二部分.pdf 数据结构-第二部分.ppt 数据结构-第三部分.pdf 数据结构-第三部分.ppt 数据...

    数据结构-栈的C语言实现

    数据结构-栈的C语言实现,随手笔记

    数据结构---栈和队列之顺序栈(C语言)

    在这个主题中,我们将专注于两种基本的线性数据结构:栈和队列,特别是C语言实现的顺序栈。顺序栈是一种在内存中连续分配空间的抽象数据类型,它具有后进先出(LIFO)或先进后出(FILO)的特性。 ### 栈的基本概念 ...

    数据结构--顺序栈的基本运算.pdf

    数据结构--顺序栈的基本运算.pdf

    数据结构---C语言描述-(耿国华)-高等教育出版社出版-课后习题答案

    在本资源中,我们将从数据结构的基本概念开始,逐步深入到线性表、栈、队列、树形结构、图状结构等复杂的数据结构中。每种数据结构都有其特点和应用场景,我们将通过实例和习题来帮助读者更好地理解和掌握这些知识点...

    c++数据结构---链式栈

    ### c++数据结构---链式栈 #### 概述 链式栈是栈的一种实现方式,它使用链表作为存储结构。与数组实现的顺序栈相比,链式栈在内存分配上更加灵活,无需预分配固定大小的空间。本文将详细介绍如何在VS2010环境下...

Global site tag (gtag.js) - Google Analytics