链栈 梦里梦外; 2023-02-27 13:34 5阅读 0赞 链栈的基本操作与顺序栈一致,但是实现方法有较大差异 首先是在成员变量上,链栈中只包含了一个top指针(主要原因是链栈是动态存储的,在程序运行过程中给需要的变量分配内存,而顺序栈是静态的,内存空间已经划分好了) template<typename T> class LinkStack //链栈类 { Node<T>* top; public: LinkStack(); ~LinkStack(); void Push(T Data); void Pop(); T Top(); bool isEmpty(); }; 其次是Push和Pop操作是通过改变next指针的指向来实现的 template<typename T> void LinkStack<T>::Push(T Data) { Node<T>* newnode = new Node<T>; newnode->data = Data; newnode->next = top; top = newnode; } 下面是具体的代码 #include<iostream> using namespace std; template<typename T>//节点结构体 struct Node { T data; Node* next; }; template<typename T> class LinkStack //链栈类 { Node<T>* top; public: LinkStack(); ~LinkStack(); void Push(T Data); void Pop(); T Top(); bool isEmpty(); }; template<typename T> LinkStack<T>::LinkStack() { top = NULL; } template<typename T> LinkStack<T>::~LinkStack() { while (top != NULL) { Node<T>* p = top; top = top->next; delete p; } } template<typename T> void LinkStack<T>::Push(T Data) { Node<T>* newnode = new Node<T>; newnode->data = Data; newnode->next = top; top = newnode; } template<typename T> void LinkStack<T>::Pop() { if (top == NULL) { cout << "栈空" << endl; return; } Node<T>* p = top; cout << p->data << endl; top = top->next; delete p; } template<typename T> T LinkStack<T>::Top() { if (top == NULL) { cout << "栈空" << endl; return -1; } return top->data; } template<typename T> bool LinkStack<T>::isEmpty() { if (top == NULL) return true; else return false; } int main() { LinkStack<int> a; a.Push(1); a.Push(2); a.Push(3); a.Pop(); cout<< a.Top()<<endl; if (a.isEmpty()) cout << "栈为空" << endl; else cout << "栈不为空" << endl; } 最后讲一下顺序栈和链栈的比较 在空间性能上,两者是相同都是*O*(1) 空间性能上,顺序栈有元素个数的限制和空间浪费的问题,而链栈没有占满的问题,只有当内存没有可用空间才会出现栈满,但是每个元素都需要一个指针域,从而产生了结构性开销。 总之,当栈的使用过程中元素个数变化较大是,用链栈是合适的反之,应采用顺序栈。
相关 链栈 typedef struct LinkNode { ElemType data; struct LinkNode next; }LinkSt - 日理万妓/ 2023年08月17日 15:15/ 0 赞/ 71 阅读
相关 链栈 链栈的基本操作与顺序栈一致,但是实现方法有较大差异 首先是在成员变量上,链栈中只包含了一个top指针(主要原因是链栈是动态存储的,在程序运行过程中给需要的变量分配内存,而顺 梦里梦外;/ 2023年02月27日 13:34/ 0 赞/ 6 阅读
相关 java栈链_java实现链栈 标签: 接下来,学习java实现链栈。 链栈类代码: package linkedstack; public class LinkStack \{ private E 悠悠/ 2022年11月04日 00:49/ 0 赞/ 176 阅读
相关 链栈 \define OK 1 \define ERROR 0 \define TRUE 1 \define FALSE 0 \define INFEASIBLE - 怼烎@/ 2022年08月25日 05:27/ 0 赞/ 102 阅读
相关 链栈 package com.loong.datastructure; / 链栈 @author Loong @param <E> / p 不念不忘少年蓝@/ 2022年07月19日 02:17/ 0 赞/ 115 阅读
相关 链式栈 2016年7月23日15:39:13 为什么需要链式栈? 这是因为,顺序栈的使用需要事先指定存贮空间的大小,如果静态分配的存贮空 ╰+哭是因爲堅強的太久メ/ 2022年07月16日 13:29/ 0 赞/ 236 阅读
相关 链栈 include <iostream> using namespace std; class node { friend clas 妖狐艹你老母/ 2022年07月14日 07:22/ 0 赞/ 107 阅读
相关 链式栈 链式栈 // //Description:链式栈 // include <iostream> include <malloc.h> 偏执的太偏执、/ 2022年06月18日 01:56/ 0 赞/ 166 阅读
相关 链栈 include<stdio.h> typedef struct node { int data; struct node 系统管理员/ 2022年06月16日 13:15/ 0 赞/ 130 阅读
相关 链栈 //linkstack.h include<string.h> include<malloc.h> include<limits.h> inc 「爱情、让人受尽委屈。」/ 2022年06月03日 20:42/ 0 赞/ 125 阅读
还没有评论,来说两句吧...