• 链表栈


    链表节点

    ListNode.h

     1 #include "stdafx.h"
     2 #include<iostream>
     3 using namespace std;
     4 template <typename Type>  class LinkStack;
     5 template <typename Type> 
     6 // 链表节点
     7 class ListNode{
     8 private:
     9     friend class LinkStack<Type>;
    10     ListNode():p_next(NULL){}
    11     ListNode(Type item , ListNode<Type>*next=NULL):data(item),p_next(next){}
    12     ~ListNode(){
    13         p_next=NULL;
    14     }
    15 private:
    16     Type data;  // 节点数据
    17     ListNode<Type>*p_next;  //下一个节点
    18 };
    View Code

    栈节点

    LinkNode.h

     1 #include "ListNode.h"
     2 template <typename Type>
     3 class LinkStack{
     4 public:
     5     LinkStack():p_top(NULL){}
     6     ~LinkStack(){
     7         makeEmpty();
     8     }
     9 public:
    10     void makeEmpty();   // 清空
    11     bool push(Type item);  // 入栈
    12     Type pop();  // 出栈
    13     Type getTop();  // 获取栈首元素
    14     void print();  // 打印
    15     bool isEmpty(){   // 判空
    16         return p_top==NULL; 
    17     }
    18 private:
    19     ListNode<Type>*p_top;
    20 };
    21 template<typename Type>
    22 void LinkStack<Type>::makeEmpty(){
    23     ListNode<Type>*pdel;
    24     while(p_top!=NULL){
    25         pdel = p_top;
    26         p_top = p_top->p_next;
    27         delete pdel;
    28     }
    29 }
    30 template <typename Type>
    31 bool LinkStack<Type>::push(Type item){
    32     ListNode<Type>*temp = new ListNode<Type>(item);
    33     if(temp==NULL){
    34         cout << "filed push item:"<<item<<endl;
    35         return false;
    36     }
    37     temp->p_next = p_top;
    38     p_top = temp;
    39     return true;
    40 }
    41 template <typename Type>
    42 Type LinkStack<Type>::pop(){
    43     if(isEmpty()){
    44         cout << "stack is empty , can't pop the element"<<endl;
    45         exit(0);
    46     }
    47     ListNode<Type>*temp = p_top;
    48     p_top = p_top->p_next;
    49     Type item = temp->data;
    50     delete temp;
    51     return item;
    52 }
    53 
    54 template <typename Type>
    55 Type LinkStack<Type>::getTop(){
    56     if(isEmpty()){
    57         cout << "stack is empty"<<endl;
    58         exit(0);
    59     }
    60     return p_top->data;
    61 }
    62 template <typename Type>
    63 void LinkStack<Type>::print(){
    64     if(isEmpty()){
    65         cout << "stack is empty"<<endl;
    66         exit(0);
    67     }
    68     ListNode<Type>*pmove = p_top;
    69     cout << "stack";
    70     while(pmove!=NULL){
    71         cout << "->" << pmove->data;
    72         pmove = pmove->p_next;
    73     }
    74     cout << endl << endl;
    75 }
    View Code
  • 相关阅读:
    sql 从A表复制数据到B表
    sql union和union all
    sql 类型转换
    SQL聚合函数
    数据存储类型
    asp.net中XML如何做增删改查操作(基础操作)
    数据库分页总结
    javascript 和 jquery 初学总结
    File FileStream StreamReader和StreamWriter
    oracle建数据库
  • 原文地址:https://www.cnblogs.com/bobo0892/p/3999951.html
Copyright © 2020-2023  润新知