链栈的基本操作

链栈的基本操作实现代码如下:

#include<iostream>

using namespace std;

#define TRUE 1

#define FALSE 0

//链栈的结构

typedef struct node

{

int data;

struct node *next;

}LinkStackNode;

typedef LinkStackNode *LinkStack;

//链栈进栈

int Push(LinkStack top, int x)//将数据元素x压入栈top中

{

LinkStackNode *temp;

temp = (LinkStackNode *)malloc(sizeof(LinkStackNode));

if (temp==NULL)//申请空间失败

{

return FALSE;

}

temp->data= x;

temp->next = top->next;

top->next = temp;//修改当前栈顶指针

return TRUE;

}

//链栈出栈

int Pop(LinkStack top, int *x)//将栈top的栈顶元素弹出,放到x所指的存储空间中

{

LinkStackNode *temp;

temp = top->next;

if (temp == NULL)//栈为空

{

return FALSE;

}

top->next = temp->next;

*x=temp->data ;

free(temp);//释放存储空间

return TRUE;

}

时间: 2024-08-26 15:44:37

链栈的基本操作的相关文章

C++实现链栈的基本操作

之前对顺序栈写了基本操作,觉得有必要也动手练练栈的链表实现. 对于链栈,一般不会出现栈满的情况. 链栈头文件定义如下: #ifndef CSTOCK_H_ #define CSTOCK_H_ typedef int elemType; struct Item { elemType data; Item * p_next; }; class CStock { public: CStock(); CStock(const CStock & otherStock); //拷贝构造函数: CStock

链栈的基本接口实现

#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define IBFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int ElemType; /* 元素类型为i

链栈的实现问题

问题描述:用链式存储实现栈的基本操作 涉及变量:top:自定义Node类,指向栈顶元素的结点 涉及教材:<数据结构--Java语言描述(第2版)> 清华大学出版社 大致思路: 链式存储结构一般是通过链接结点类来形成链 出栈是由栈顶元素向栈底元素方法依次输出 则top的位置需指向栈顶元素 判空的根据是top结点是否为空,即栈顶元素是否存在 置空只需要将top指针指向null,则可以重新开始入栈操作 求长度需要遍历了全部结点后才能计算准确长度 陈列元素也需要遍历各元素,与求长度的算法有点类似,只是

链栈基本操作

栈基本概念: 栈(stack)是限定在表尾进行插入和删除操作的线性表(或单链表). //只能在一段进行插入和删除,因此不存在,在中间进行插入 栈顶(top):允许插入和删除的一端.而另一端称为栈底(bottom) 空栈:不含任何数据元素的栈. 后进先出 两个基本操作: 栈的插入操作(push),叫做进栈,或压栈,或入栈 删除操作(pop),叫做出栈,或弹栈 注意链栈next指针的指向,与队列不同: 如果插入一个元素,它的next指针是指向前一个已经在栈中的元素的 而队列则是,插入一个元素,其ne

C++链栈基本操作

1 #include <iostream> 2 using namespace std; 3 4 struct Node 5 { 6 int data; 7 Node *next; 8 }; 9 10 /*初始化链栈*/ 11 void InitChainStack(Node *top) 12 { 13 top->next=0; 14 } 15 16 /*往栈里压进数据elem*/ 17 int Push(Node *top, int elem) 18 { 19 Node *p=(Nod

数据结构(C实现)------- 链栈

描述:      链栈,即栈的链式存储结构,链栈通常使用不带头结点的单链表来表示,因此其结点的结构和单链表的结点结构相同. 在一个链栈中,栈底就是链表的最后一个结点,而栈顶总是链表的第一个结点.因此,新入栈的元素即为链表中采用头插法新加入的结点,一个链栈可以由栈顶指针唯一确定,当top为NULL时,则表示该栈是一个空的链栈.  实现:   链栈结点的类型描述: typedef int ElemType; typedef struct node{ ElemType data; struct nod

小猪的数据结构辅助教程——3.2 栈与队列中的链栈

小猪的数据结构辅助教程--3.2 栈与队列中的链栈 标签(空格分隔): 数据结构 1.本节引言: 嗯,本节没有学习路线图哈,因为栈我们一般都用的是顺序栈,链栈还是顺带提一提吧, 栈因为只是栈顶来做插入和删除操作,所以较好的方法是将栈顶放在单链表的头部,栈顶 指针与单链表的头指针合二为一~所以本节只是讲下链栈的存储结构和基本操作! 2.链栈的存储结构与示意图 存储结构: typedef struct StackNode { SElemType data; //存放的数据 struct StackN

2.1.2链栈的设计与实现(推荐)

链表栈的基本操作包括栈的建立.求长度.取栈顶元素.入栈.出栈.判断栈是否空等具体操作. //调试环境:DevC++ //库文件和预设定义 #include <stdio.h> #include <stdlib.h> #define Stack_Length 6 #define OK 1 #define ERROR 0 typedef int SElemType; //存储形式 typedef struct SNode { SElemType data; struct SNode *

链栈的实现

链栈即链式栈,也就是说我们不用再考虑空间的大小,可随心所欲的进行数据的插入/删除了.和顺序栈一样,仍然要保持其stack的特性,只在一端进行插入和删除,后进先出. 示例代码: #ifndef _LINKSTACK_H #define _LINKSTACK_H typedef int ElemType; typedef int Status; typedef struct linkStack { ElemType data; struct linkStack * top; }linkStack;