关于文件与链表的操作
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);
}
//要求就是用链表存储下来然后按照字典的顺序排序.
//然后当你输入一个或者几个单词的时候,
//系统应该知道你建立的链表字典里有没有这个单词?
#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);
}
相关文章推荐
- 你一定要知道的关于Linux文件目录操作的12个常用命令
- 关于文件I/o的原子操作
- 关于python文件操作
- 关于删除链表元素的操作
- 关于python文件操作
- 关于python文件操作(转)
- java关于文件的操作
- iOS中关于文件操作
- 关于python文件操作
- 操作,Emacs]关于调整窗口大小及简单的文件对比
- 关于oracle 11.2.0.4 使用asm磁盘组条件下对应用数据表空间文件的rename alias操作
- Python中关于文件路径的简单操作 [转]
- c语言关于文件操作的常用函数(新手入门看)
- 关于"以前的某个程序安装已在安装计算机上创建挂起的文件操作"解决办法
- 关于线性表的链式存储(链表)的创建,头插法,尾插法,删除链表结点的操作
- PHP关于文件的一些基本操作
- 关于C#对文件的操作
- 关于整理工作中用到的链表和哈希表的简单操作
- 关于leetcode中链表操作的的几道题。
- 关于Python文件操作