Помогите найти ошибку уже замучалсо, итак прога:
Написать программу, составляющую по трем символьным файлам линейные упорядоченные по длине слов списки и функцию объединения списков.
Выдать объединенный список на экран. Функцию объединения списков такую чтобы, 3 список был отсортирован слиянием по первым двум (как понимаете только это сделать не получается)
Язык С
неправильно работает функции PLNODE merge, помогите плизз
вот кот:
Code
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<string.h>
#define SIZE_OF_STRING 1000
#define SIZE_OF_word 100
typedef struct node //структура,экземпляр, указатель
{
char str[SIZE_OF_word];
struct node *next;
}LNODE,*PLNODE;
PLNODE merge(PLNODE *top1,PLNODE *top2,PLNODE *top3) //обьединяем 3 списка в один
{
PLNODE cur3=*top3;
PLNODE cur=*top1;
PLNODE cur2=*top2;
int len_pre;
int len_new;
PLNODE newp;
for( ; ; )
{
if((cur!=NULL))
len_pre=strlen(cur->str);
if((cur==NULL) && ((cur2!=NULL)))
len_pre=len_new+1;
if((cur2!=NULL))
len_new=strlen(cur2->str);
if((cur2==NULL) && ((cur!=NULL)))
len_new=len_pre+1;
if((cur==NULL) && (cur2==NULL)){
return *top3;
}
if((len_pre!=0 && len_new==0)) {
cur2=cur2->next;
len_new=strlen(cur2->str);
}
if((len_pre==0 && len_new==0)) {
cur=cur->next;
cur2=cur2->next;
len_pre=strlen(cur->str);
len_new=strlen(cur2->str);
}
if((len_pre>len_new)) {
if(*top3!=NULL) {
*top3=cur2;
cur3=*top3;
cur3=cur3->next;
}
if(*top3==NULL) {
*top3=cur2;
cur3=*top3;
cur3=cur3->next;
}
cur2=cur2->next;
}
else {
if(*top3!=NULL) {
*top3=cur;
cur3=*top3;
cur3=cur3->next;
}
if(*top3==NULL) {
*top3=cur;
cur3=*top3;
cur3=cur3->next;
}
cur=cur->next;
}
}
}
void main(void)
{
FILE *file1;
FILE *file2;
file1=fopen("D:/abc.txt","rt");
PLNODE top1;
...
file2=fopen("D:/def.txt","rt");
PLNODE top2;
...
printf("\nlists 1+2\n===================\n");
PLNODE top_1_2,topmerge=NULL,topmerge2=NULL;
top_1_2=merge(&top1,&top2,&topmerge);
}
большую часть программы пришлось снести - нет места