/*
* File name : LinkList.cpp
* Function : 链栈的C++实现
* Created on : 2016年4月22日
* Author : beijiwei@qq.com
* Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。
任何单位和个人不经本人允许不得用于商业用途
*/
#include <cstdio>
#include <iostream>
using namespace std;
typedef struct node {
int data;
struct node * next;
}Node,*pNode;
typedef struct {
pNode ptop;
int count;
}Lstack;
void Lstack_init(Lstack &LS);
void Lstack_push(Lstack &LS, int elem);
bool Lstack_pop(Lstack &LS, int &elem);
bool Lstack_is_empty(Lstack &LS);
int Lstack_get_length(Lstack &LS);
bool Lstack_get_elem(Lstack &LS, int &elem);
int main(int argc, char** argv)
{
int elem;
Lstack ls;
Lstack_init(ls);
Lstack_pop(ls, elem);
cout << "Lastack ls is empty ? " << Lstack_is_empty(ls) << endl;
Lstack_push(ls, 10);
Lstack_push(ls, 11);
Lstack_push(ls, 12);
cout << "Lastack ls is empty ? " << Lstack_is_empty(ls) << endl;
cout << "The length of Lstack ls is " << Lstack_get_length(ls) << endl;
Lstack_push(ls, 18);
cout << "The length of Lstack ls is " << Lstack_get_length(ls) << endl;
Lstack_pop(ls, elem);
cout << "The pop elem is " << elem << endl;
cout << "The length of Lstack ls is " << Lstack_get_length(ls) << endl;
Lstack_get_elem(ls, elem);
cout << "The top of Lstack ls is " <<elem << endl;
Lstack_push(ls, 13);
cout << "The top of Lstack ls is " << elem << endl;
Lstack_pop(ls, elem);
cout << "The top of Lstack ls is " << elem << endl;
Lstack_pop(ls, elem);
cout << "The top of Lstack ls is " << elem << endl;
Lstack_pop(ls, elem);
cout << "The top of Lstack ls is " << elem << endl;
Lstack_pop(ls, elem);
cout << "The top of Lstack ls is " << elem << endl;
Lstack_pop(ls, elem);
cout << "The top of Lstack ls is " << elem << endl;
return 0;
}
void Lstack_init(Lstack &LS)
{
LS.count = 0;
LS.ptop = nullptr;
}
void Lstack_push(Lstack &LS, int elem) {
pNode p = LS.ptop;
pNode ptmp = nullptr;
ptmp = new Node;
ptmp->data = elem;
ptmp->next = p;
LS.ptop= ptmp;
LS.count++;
}
bool Lstack_pop(Lstack &LS, int &elem) {
pNode p = LS.ptop;
pNode ptmp = nullptr;
if (LS.count == 0) {
cout << "Lstack is empty,can not pop." << endl;
elem = -1;
return false;
}
ptmp = LS.ptop;
elem = LS.ptop->data;
LS.ptop=ptmp->next;
delete ptmp;
LS.count--;
return true;
}
bool Lstack_is_empty(Lstack &LS) {
return (LS.count == 0) ? true : false;
}
int Lstack_get_length(Lstack &LS) {
return LS.count;
}
bool Lstack_get_elem(Lstack &LS , int &elem) {
if (Lstack_is_empty(LS)) {
cout << "Lstack is empty." << endl;
return false;
}
elem = LS.ptop->data;
return true;
}
简单数据结构----链栈的C++实现
最新推荐文章于 2021-11-21 12:44:39 发布