#include <iostream>
#include <cstdlib>
int num;
typedef char ElemType;
using namespace std;
typedef struct Stack
{
ElemType data;
struct Stack *next;
}Stack, *StackLink;
void Push_Stack(StackLink Top)
{
StackLink p;
char n;
num = 0;
cout << "向栈内输入元素,并以#号键结束!" << endl;
while(cin >> n && n != '#')
{
p = (StackLink)malloc(sizeof(Stack));
p -> data = n;
p -> next = Top -> next;
Top -> next = p;//此时的入栈相当于单链表的头插法,Top指针永远作为头指针,将先输入的元素一次压到Top节点后面
num++;
}
}
void Pop_Stack(StackLink Top)
{
if(Top -> next == NULL)
{
cout << "栈为空" << endl;
exit(0);
}
else
cout << "栈内元素个数:" << num << endl;
while(Top -> next != NULL)
{
cout << Top -> next -> data << " ";
Top = Top -> next;
}
cout << endl;
}
int main()
{
int n;
while(1)
{
StackLink Top;
Top = (StackLink)malloc(sizeof(Stack));
Top -> next = NULL;
Push_Stack(Top);
Pop_Stack(Top);
}
return 0;
}
#include <cstdlib>
int num;
typedef char ElemType;
using namespace std;
typedef struct Stack
{
ElemType data;
struct Stack *next;
}Stack, *StackLink;
void Push_Stack(StackLink Top)
{
StackLink p;
char n;
num = 0;
cout << "向栈内输入元素,并以#号键结束!" << endl;
while(cin >> n && n != '#')
{
p = (StackLink)malloc(sizeof(Stack));
p -> data = n;
p -> next = Top -> next;
Top -> next = p;//此时的入栈相当于单链表的头插法,Top指针永远作为头指针,将先输入的元素一次压到Top节点后面
num++;
}
}
void Pop_Stack(StackLink Top)
{
if(Top -> next == NULL)
{
cout << "栈为空" << endl;
exit(0);
}
else
cout << "栈内元素个数:" << num << endl;
while(Top -> next != NULL)
{
cout << Top -> next -> data << " ";
Top = Top -> next;
}
cout << endl;
}
int main()
{
int n;
while(1)
{
StackLink Top;
Top = (StackLink)malloc(sizeof(Stack));
Top -> next = NULL;
Push_Stack(Top);
Pop_Stack(Top);
}
return 0;
}