#include "stdafx.h" #include #include 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; }