스 택 구조 로 파일 을 역순 으로 읽 습 니 다.
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;
}