#include <stdio.h>
#include <string.h>
typedef struct _StackData{
char *pdata;
_StackData *up;
_StackData *next;
}StackData;
typedef struct _Stack{
_StackData *head;
_StackData *last;
}Stack;
void initStack(Stack *s)
{
s->head=0;
s->last=0;
}
void push(Stack *s, char *p)
{
StackData *curr;
if(!s->last)
{
s->head=s->last=new StackData;
curr=s->last;
curr->up=0;
}
else
{
curr=s->last;
curr->next=s->last=new StackData;
s->last->up=curr;
curr=s->last;
}
curr->next=0;
curr->pdata=new char[strlen(p)+1];
strcpy(curr->pdata,p);
}
int pop(Stack *s, char *p)
{
StackData *curr;
if(!s->last)
{
return 0;
}
else
{
curr=s->last;
if(curr->up)
{
s->last=curr->up;
s->last->next=0;
}
else
{
s->head=s->last=0;
}
strcpy(p,curr->pdata);
delete[]curr->pdata;
delete[]curr;
return 1;
}
}
void freeStack(Stack *s)
{
StackData *curr,*curr2;
curr=s->head;
while(curr)
{
curr2=curr->next;
delete[]curr->pdata;
delete[]curr;
curr=curr2;
}
s->head=0;
s->last=0;
}
int main()
{
Stack s;
FILE *fp1,*fp2;
char str[1024],*x;
int b;
initStack(&s);
fp1=fopen("1.txt","r");
if(!fp1) return 0;
while(fgets(str,256,fp1)!=NULL)
{
x=strchr(str,'\n');
if(x) *x='\0';
push(&s,str);
}
fclose(fp1);
fp2=fopen("2.txt","w");
if(!fp2) return 0;
b=0;
while(pop(&s,str))
{
if(b)
{
printf(",");
fputs("\n",fp2);
}
printf("%s",str);
fputs(str,fp2);
b=1;
}
fclose(fp2);
freeStack(&s);
return 0;
}
温馨提示:答案为网友推荐,仅供参考