#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
ElementType NULLELEMENT = -788822998;
typedef struct LinkNode
{
ElementType Data;
struct LinkNode *Next;
}Link_Node;
typedef Link_Node* LinkNodePointer;
void Push(LinkNodePointer lkp,ElementType data) {
LinkNodePointer newLNp = (LinkNodePointer)malloc(sizeof(Link_Node));
if (!lkp->Next)
{
lkp->Next = newLNp;
newLNp->Next = NULL;
newLNp->Data = data;
}
else
{
newLNp->Next = lkp->Next;
newLNp->Data = data;
lkp->Next = newLNp;
}
}
ElementType Pop(LinkNodePointer lkp) {
if (!lkp->Next)
{
return NULLELEMENT;
}
else
{
LinkNodePointer lknextp;
lknextp = lkp->Next;
lkp->Next = lknextp->Next;
return lknextp->Data;
}
}
void CLearStack(LinkNodePointer lkp) {
LinkNodePointer temp,storeP;
if (!lkp->Next)
{
return;
}
temp = lkp->Next;
lkp->Next = NULL;
storeP = temp->Next;
free(temp);
while (storeP!=NULL)
{
temp = storeP;
storeP = temp->Next;
free(temp);
}
}
void ShowStack(LinkNodePointer lkp) {
LinkNodePointer temp ;
if (!lkp->Next)
{
printf("********************************\n");
return;
}
else
{
temp = lkp->Next;
printf(" %d ,", temp->Data);
printf(" %d ;\n",(int) temp->Next);
while (temp->Next)
{
printf(" %d ", temp->Next->Data);
printf(" %d ;\n", (int)temp->Next->Next);
temp = temp->Next;
}
}
printf("********************************\n");
}
void main() {
//create top
LinkNodePointer lkp = (LinkNodePointer)malloc(sizeof(Link_Node));
lkp->Data = 0;
lkp->Next = NULL;
Push(lkp, 12);
Push(lkp, 12);
Push(lkp, 12);
ShowStack(lkp);
CLearStack(lkp);
ShowStack(lkp);
printf("refresh");
Push(lkp, 12);
Push(lkp, 12);
Push(lkp, 12);
Pop(lkp);
Pop(lkp);
ShowStack(lkp);
CLearStack(lkp);
ShowStack(lkp);
}