您的位置:首页 > 其它

关于文件与链表的操作

2007-12-01 10:38 330 查看
//这个文件含有2000多个英文单词(没有顺序),


//要求就是用链表存储下来然后按照字典的顺序排序.


//然后当你输入一个或者几个单词的时候,


//系统应该知道你建立的链表字典里有没有这个单词?


#include<stdio.h>


#include<malloc.h>


#include <stdlib.h>


#include<string.h>


#include<iostream.h>


#define LEN 20




typedef struct lone...{


char a[20];


struct lone *next;


}node;


node *read(node *head,int *n)




...{


node *p1,*p2,*p3;


int m=0;


FILE *fp;


if((fp=fopen("a.txt","r"))==NULL)




...{


printf("can not open the file ");


exit(0);


}


do




...{


p1=(node *)malloc(sizeof(node));


fscanf(fp,"%s",&p1->a);


if(m==0)




...{


p2=p1;


head=p1;


}


else




...{


p2->next=p1;


}


p2=p1;


m++;


}while(!feof(fp));


*n=m;


p2->next=NULL;


fclose(fp);


return head;


}


void sort(node *head,int n)




...{


int i,j;


node *ptr1,*ptr2,*temp,*ptr3;


ptr3=head;


while(ptr3!=NULL)




...{


ptr1=head;


ptr2=head->next;


ptr3=ptr3->next;


while(ptr2!=NULL)




...{


if(strcmp(ptr1->a,ptr2->a)>0)




...{


temp=(node *)malloc(sizeof(node));


strcpy(temp->a,ptr2->a);


strcpy(ptr2->a,ptr1->a);


strcpy(ptr1->a,temp->a);


}


ptr1=ptr2;


ptr2=ptr2->next;


}




}


}


void search(node *head)




...{


int i=0,m=0,j;




char *b[LEN]=...{"what","is","you","name"};//LEN你可以自己定义,我这定义的最多是20个单词的,要输入语句的单词就在这里面改


while(b[i++]!=NULL) //example:*b[LEN]={"I","like","this","GAME","WHAT","you","like"};




...{


m++;


}


node *p;


p=(node *)malloc(sizeof(node));


for(i=0; i<m; i++)




...{ p=head;


while( p!=NULL && strcmpi(p->a,b[i])!=0)




...{


p=p->next;


}


if(p!=0)




...{


printf("find p->a: %s ",p->a);


}


if(!p)




...{


printf("error,this word [%s] was not find ",b[i]);


}


}


p=NULL;


}


void main()




...{


node *head,*p3;


int n;


head=read(head,&n);


printf("n=%d",n);


p3=head;


while(p3!=NULL)




...{


printf("this num:%s ",p3->a);


p3=p3->next;


}


sort(head,n);


p3=head;


printf(" ");


while(p3!=NULL)




...{


printf("this num:%s ",p3->a);


p3=p3->next;


}


search(head);


}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: