alanKin123Jin
10/6/2019 - 9:26 AM

Stack LinkList

#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);
}