赞
踩
- #include <iostream>
- #include <string>
-
- using namespace std;
-
- #define MAX 10
-
- template<typename T>
- struct Stack
- {
- T data[MAX];
- int size;
- Stack(T *data);
- //入栈
- void pushStack(T t);
- //出栈
- void popStack();
- //访问栈顶元素
- T* topStack();
- //获取栈大小
- int sizeStack();
- //清空栈
- void clearStack();
- };
-
- struct Person
- {
- string name;
- int age;
- };
-
- template<typename T>
- Stack<T>::Stack(T *data)
- {
- size=0;
- }
-
- template<typename T>
- void Stack<T>::pushStack(T t)
- {
- if(size == MAX)
- {
- return;
- }
- data[size]=t;
- size++;
- }
-
- template<typename T>
- void Stack<T>::popStack()
- {
- if(size == 0)
- {
- return;
- }
- size--;
- }
-
- template<typename T>
- T* Stack<T>::topStack()
- {
- if(size == 0)
- {
- return NULL;
- }
- return &data[size-1];
- }
-
- template<typename T>
- int Stack<T>::sizeStack()
- {
- return size;
- }
-
- template<typename T>
- void Stack<T>::clearStack()
- {
- size=0;
- }
-
-
- int main()
- {
- //初始化数据
- Person p[5]={{"A",10},{"B",20},{"C",30},{"D",40},{"E",50}};
- //初始化栈
- Stack<Person> stack(NULL);
- //入栈
- for(int i=0;i<5;i++)
- {
- stack.pushStack(p[i]);
- }
- //获取栈大小
- cout<<stack.sizeStack()<<endl;
- //获取栈顶元素
- Person *person=stack.topStack();
- cout<<person->name<<" "<<person->age<<endl;
- //出栈
- stack.popStack();
- //获取栈顶元素
- person=stack.topStack();
- cout<<person->name<<" "<<person->age<<endl;
- //清空栈
- stack.clearStack();
- //获取栈大小
- cout<<stack.sizeStack()<<endl;
- //获取栈顶元素
- person=stack.topStack();
- cout<<person->name<<" "<<person->age<<endl;
- return 0;
- }

- #include <iostream>
- #include <string>
-
- using namespace std;
-
- struct Link_Node
- {
- Link_Node *next;
- };
-
- struct Link_Stack
- {
- Link_Node *head;
- int size;
- Link_Stack();
- ~Link_Stack();
- //入栈
- void pushStack(Link_Node *node);
- //出栈
- void popStack();
- //访问栈顶元素
- Link_Node* topStack();
- //获取栈的大小
- int sizeStack();
- //清空栈
- void clearStack();
- };
-
- struct Person
- {
- Link_Node node;
- string name;
- int age;
- Person(string name,int age);
- };
-
- Link_Stack::Link_Stack()
- {
- head=new Link_Node;
- head->next=NULL;
- size=0;
- }
-
- Link_Stack::~Link_Stack()
- {
- delete head;
- }
-
- void Link_Stack::pushStack(Link_Node *node)
- {
- node->next=head->next;
- head->next=node;
- size++;
- }
-
- void Link_Stack::popStack()
- {
- if(size == 0)
- {
- return;
- }
- head->next=head->next->next;
- size--;
- }
-
- Link_Node *Link_Stack::topStack()
- {
- if(size == 0)
- {
- return NULL;
- }
- return head->next;
- }
-
- int Link_Stack::sizeStack()
- {
- return size;
- }
-
- void Link_Stack::clearStack()
- {
- head->next=NULL;
- size=0;
- }
-
- Person::Person(string name, int age)
- {
- this->name=name;
- this->age=age;
- }
-
- int main()
- {
- //初始化数据
- Person p1("A",10);
- Person p2("B",20);
- Person p3("C",30);
- Person p4("D",40);
- Person p5("E",50);
- //初始化栈
- Link_Stack stack;
- //入栈
- stack.pushStack((Link_Node*)&p1);
- stack.pushStack((Link_Node*)&p2);
- stack.pushStack((Link_Node*)&p3);
- stack.pushStack((Link_Node*)&p4);
- stack.pushStack((Link_Node*)&p5);
- //访问栈顶元素
- Person *person=(Person*)stack.topStack();
- cout<<person->name<<" "<<person->age<<endl;
- //出栈
- stack.popStack();
- person=(Person*)stack.topStack();
- cout<<person->name<<" "<<person->age<<endl;
- cout<<stack.sizeStack()<<endl;
- stack.clearStack();
- cout<<stack.sizeStack()<<endl;
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。