rendered paste body#include "stdafx.h"
#include <malloc.h>
#include <cstring>
struct word
{
char *str;
word *next,*prev;
};
void getData(word *begin,word *curr,word *curr2)
{
char *buff,c;
int n;
FILE *in;
in=fopen("text.in","r");
buff=(char*)calloc(64,sizeof(char));
buff[0]=' ';
begin->str=buff;
n=0;
while((c=getc(in))!=EOF)
{
if(c==' ')
{
buff[n]='\0';
curr=new word;
curr2->next=curr;
curr->prev=curr2;
curr->next=NULL;
curr->str=buff;
curr2=curr;
n=0;
buff=(char*)calloc(64,sizeof(char));
}
else
{
buff[n]=c;
n++;
}
}
}
void uniqueWords(word *curr,word *curr2)
{
FILE *out;
bool flag;
out=fopen("text.out","w");
do
{
curr2=curr;
flag=false;
while(curr2->prev!=NULL)
{
curr2=curr2->prev;
if(strcmp(curr2->str,curr->str)==0)
{
flag=true;
break;
}
}
if(!flag)
{
fprintf(out,"%s ",curr->str);
}
curr=curr->next;
}
while(curr->next!=NULL);
}
void clearMemory(word *curr)
{
while(curr->next!=NULL)
{
curr=curr->next;
}
while(curr->prev!=NULL)
{
free(curr->next);
free(curr->str);
curr=curr->prev;
}
free(curr);
}
int main(int argc, char* argv[])
{
word *begin,*curr,*curr2;
begin=new word;
begin->next=NULL;
begin->prev=NULL;
curr2=begin;
getData(begin,curr,curr2);
curr=begin;
uniqueWords(curr,curr2);
clearMemory(curr);
return 0;
}