Форум программистов, компьютерный форум CyberForum.ru

Сортировка слиянием(1 сорт список+2 сорт список=3 сорт список) - C++

Восстановить пароль Регистрация
 
Promolol
Сообщений: n/a
22.05.2010, 00:24     Сортировка слиянием(1 сорт список+2 сорт список=3 сорт список) #1
Помогите найти ошибку уже замучалсо, итак прога:
Написать программу, составляющую по трем символьным файлам линейные упорядоченные по длине слов списки и функцию объединения списков.
Выдать объединенный список на экран.

Функцию объединения списков такую чтобы, 3 список был отсортирован слиянием по первым двум (как понимаете только это сделать не получается)

Язык С

неправильно работает функции PLNODE merge, помогите плизз

вот кот:

Код
#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);

}
большую часть программы снес, оставил основу там где ошибка, помогите найти плиз
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2010, 00:24     Сортировка слиянием(1 сорт список+2 сорт список=3 сорт список)
Посмотрите здесь:

C++ 3 класса: список, стек(как список), очередь(как список)
list. Cоздать список из результатов(с массивами), а потом просмотреть весь список C++
C++ создать список л3 из элементов входящих и в список л1 и в список л2
Классы с наследованием. Описать класс fruit, содержащий поля сорт, размер, описание C++
C++ задача сорт и поиск бульбашка
C++ Составить программу, в которой описывается структура из полей: Товар, Цена, Сорт
Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список C++
C++ Сформировать список из 10 книг, используя динамическую структуру данных односвязный список

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 07:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru