스 택 구조 로 파일 을 역순 으로 읽 습 니 다.

2157 단어 데이터 구조.
#ifndef HEAD_H_
#define HEAD_H_
#include 
#include 
#include 
#define SIZE 1024

typedef struct _Node                      //      。
{
	char buff [SIZE];                 //          。
	struct _Node *next;
}Node,*pNode;

typedef struct _Stack                    //       。
{
	struct _Node *top;
	struct _Node *bottom;
	unsigned int size;                //        。
}Stack,*pStack;

void Initialize (pStack MyStack);
int Push_Stack (pStack MyStack,char *a);
void Display_Stack (pStack MyStack);
int Tac (FILE* ffp,pStack MyStack);


#endif /* HEAD_H_ */
#include "head.h"

void Initialize (pStack MyStack)                //   。
{
	MyStack->bottom = NULL;
	MyStack->size = 0;
	MyStack->top = NULL;
}

int Push_Stack (pStack MyStack,char *a)              //  。               。
{
	pNode ptr = (pNode)malloc (sizeof (Node));
	ptr->next = NULL;
	strcpy (ptr->buff,a);                      //  。
	MyStack->size++;
	if (MyStack->top == NULL)
	{
		MyStack->bottom =ptr;
		MyStack->top = ptr;
	}

	else
	{
		ptr->next = MyStack->top;
		MyStack->top = ptr;
	}

	return MyStack->size;
}


void Display_Stack (pStack MyStack)                 //  
{
 	pNode ptr = MyStack->top;

 	if (ptr == NULL)
 	{
 		return;
 	}
 	else
 	{
 		do
 		{
 			printf ("%s
",ptr->buff); ptr = ptr->next; }while (ptr != NULL); } }
#include "head.h"

int Tac (FILE* ffp,pStack MyStack)                //        。
{
	char buff1 [SIZE];
	int sum = MyStack->size;

	while (fgets (buff,SIZE,ffp) != NULL)
	{
		Push_Stack (MyStack,buff1);
	}
	Display_Stack (MyStack);
	fclose (ffp);

	return sum;
}




int main (int argc,char* argv[])                 //         ,        。
{
	Stack ms;
	FILE* fp;

	Initialize (&ms);

	if (argc != 2)
	{
		perror ("Usage commend ");
	}

	else
	{
		if ((fp = fopen (argv[1],"r")) == NULL)
		{
			perror ("Open fail
"); } else { Tac (fp,&ms); } } return EXIT_SUCCESS; }

좋은 웹페이지 즐겨찾기