## 代码 ##
/*
function:Link stack
created by : xilong
date: 2017.2.9
*/
#include "iostream"
#include <stdlib.h>
#include <math.h>
using namespace std;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Elemtype;
typedef int Status;
typedef struct Node
{
Elemtype data;
struct Node *next;
} Node;
typedef struct Node* LinkStack;
LinkStack top = NULL; // 链栈的头指针,起始是NULL,以后指向最顶部的元素
/*
push
*/
void Push(Elemtype e)
{
LinkStack temp;
temp = (LinkStack)malloc(sizeof(LinkStack));
if (temp)
{
temp->data = e;
temp->next = top;
top = temp;
}
}
/*
pop
*/
void Pop( Elemtype *e)
{
LinkStack p;
p = top;
*e = p->data;
top = top->next;
free(p);
}
/*
length
*/
int Length_Stack()
{
LinkStack p;
p = top;
int len = 1;
while (p->next != NULL)
{
len++;
p = p->next;
}
return len;
}
void main()
{
LinkStack top;
Elemtype e;
Push(1);
Push(2);
Push(3);
Push(4);
Push(5);
Push(6);
Push(7);
Push(8);
cout << "栈的长度为:";
cout << Length_Stack() << endl;
int i, len;
len = Length_Stack();
for (i = 0; i < len; i++)
{
Pop(&e);
cout << e << " ";
}
cout << endl;
system("pause");
}