棧的應用-平橫符號

/Stack.h
#ifndef _STACK_H_
#define ElementType char
struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode Stack;

struct Node
{
	ElementType Element;
	PtrToNode Next;
};

int IsEmpty(Stack S);
Stack CreateStack(void);
void MakeEmpty(Stack S);
void Push(ElementType X,Stack S);
void Pop(Stack S);
ElementType Top(Stack S);

#endif
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//Stack.c
#include<stdio.h>
#include "Stack.h"
#include<stdlib.h>

int IsEmpty(Stack S)
{
	return S->Next==NULL;
}

Stack CreateStack(void)
{
	Stack S;
	S=malloc(sizeof(struct Node));
	if(S==NULL)
	{
		printf("out of space\n");
	}
	S->Next=NULL;
	
	return S;
}

void MakeEmpty(Stack S)
{
	if(S==NULL)
	{
		printf("Must use CreateStack first");
	}
	
}

void Push(ElementType X,Stack S)
{
	Stack TmpCell;
	
	TmpCell=malloc(sizeof(struct Node));
	
	if(TmpCell==NULL)
	{
		printf("out of space\n");
	}
	else
	{
		TmpCell->Next=S->Next;
		TmpCell->Element=X;
		S->Next=TmpCell;
	}
}

void Pop(Stack S)
{
	PtrToNode TmpCell;
	if(S==NULL)
	{
		printf("Empty of stack\n");
	}
	else
	{
		TmpCell=S->Next;
		S->Next=TmpCell->Next;
		free(TmpCell);
	}
}

ElementType Top(Stack S)
{
	if(S==NULL)
	{
		printf("Empty of stack\n");
		return 0;
	}
	else
	{
		return S->Next->Element;
	}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//main.c
#include<stdio.h>
#include "Stack.h"
#include<string.h>

int main(void)
{
	
	//printf("1_1");
	
	Stack S;
	ElementType x;
	S=CreateStack();
	FILE *fp;
	int ch;
	int ch_1;
	fp=fopen("Check_mark.txt","r");
	ch=getc(fp);
//  putchar(ch);
	
//	printf("1_2");
	while(ch!=EOF)
	{
	//	printf("1_3");
		if(S!=NULL)
		{
			if(ch=='(')
			{
				Push(ch,S);
			}
			ch=getc(fp);
			//putchar(ch);
			if(ch==')')
			{
				if(IsEmpty(S))
				{
					printf("The brackets is miss!\n");
				}
				else
				{
					ch_1=Top(S);
					Pop(S);
					if(ch_1=='(')
					{
						printf("You are right!\n");
					}
					else
					{
						printf("You are wrong!\n");
					}
					printf("You pass the checking!\n");
				}
			}
		}
		else
		{
			printf("Stack is Empty\n");
			return;
		}
		
	} 
	fclose(fp);
}
相關文章
相關標籤/搜索