首先把a.txt和b.txt读入链表,然后判断是否有相同,如果没有相同的就输到C.txt中。
#include
#include
#include
typedef struct
首先把a.txt和b.txt读入链表,然后判断是否有相同,如果没有相同的就输到C.txt中。
#include
#include
#include
typedef struct a{
int aa;
int ab;
struct a* next;}a;
typedef struct b{
int ba;
int bb;
struct b* next;}b;
typedef struct c{
int ca;
int cb;
struct c* next;}c;
int main(){
FILE* fp;
char x;
int along,blong,clong;
a *ahead,*ap,*aq;
b *bhead,*bp,*bq;
c *chead,*cp,*cq;
along=0;
blong=0;
clong=0;
ahead=(a*)malloc(sizeof(a));
ahead->next=NULL;
aq=ahead;
if((fp=fopen("a.txt","r"))==NULL){printf("文件a读取失败!!\n");return -1;}
while(1)
{
ap=(a*)malloc(sizeof(a));
ap->next=NULL;
fscanf(fp,"%d",&ap->aa);fscanf(fp,"%c",&x); fscanf(fp,"%d",&ap->ab);fscanf(fp,"%c",&x);
aq->next=ap;
aq=ap;
along++;
if(x!='\n')break; }
fclose(fp);
bhead=(b*)malloc(sizeof(b));
bhead->next=NULL;
bq=bhead;
if((fp=fopen("b.txt","r"))==NULL){printf("文件b读取失败!!\n");return -2;}
while(1)
{
bp=(b*)malloc(sizeof(b));
bp->next=NULL;
fscanf(fp,"%d",&bp->ba);
fscanf(fp,"%c",&x);
fscanf(fp,"%d",&bp->bb);
fscanf(fp,"%c",&x);
bq->next=bp;
bq=bp; blong++;
if(x!='\n')break; }
fclose(fp);
ap=ahead;
bp=bhead;
chead=(c*)malloc(sizeof(c));
chead->next=NULL;
cq=chead;
ap=ap->next;
bp=bp->next;
while(ap != NULL) { bp = bhead; while (bp != NULL) { if(ap->aa==bp->ba&&ap->ab==bp->bb) { cp=(c*)malloc(sizeof(c));
cp->next=NULL;
cp->ca=bp->ba;
cp->cb=bp->bb;
cq->next=cp;
cq=cp;
clong++; }
bp = bp->next; }
ap = ap->next; }
if((fp=fopen("c.txt","w"))==NULL){printf("文件c建立失败!!\n");return -3;}
cp=chead;
while(1) {
cp=cp->next;
fprintf(fp,"%d\t",cp->ca);
fprintf(fp,"%d\t",cp->cb);
if(cp->next==NULL)break;
else fprintf(fp,"\n"); }
fclose(fp);
return 0;
}
展开
全部