Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Promolol
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 1
#1

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

22.05.2010, 00:24. Просмотров 503. Ответов 0
Метки нет (Все метки)

Помогите найти ошибку уже замучалсо, итак прога:
Написать программу, составляющую по трем символьным файлам линейные упорядоченные по длине слов списки и функцию объединения списков.
Выдать объединенный список на экран.

Функцию объединения списков такую чтобы, 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);

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

задача сорт и поиск бульбашка - C++
надо по сортировать числа 12 22 15 55 11 21 12 31 13 51 55 15 с помощью буль башки в отсортированном массиве после этова найти...

Составить программу, в которой описывается структура из полей: Товар, Цена, Сорт - C++
Составить программу, в которой описывается структура из полей: Товар, Цена, Сорт. Организовать ввод двух структурных переменных, вывод...

Классы с наследованием. Описать класс fruit, содержащий поля сорт, размер, описание - C++
В программе описать класс fruit содержащий поля сорт, размер, описание. Наследующий классы Apple с полем качество сока и Orrange с полем...

Создать список L3 из элементов, входящих и в список L1 и в список L2 - C++
создать список л3 из элементов входящих и в список л1 и в список л2

3 класса: список, стек(как список), очередь(как список) - C++
препод дал задание: написать 3 класса (список, стек, очередь), методы: вывод, добавление, удаление. Использовать при обращении указатель...

list. Cоздать список из результатов(с массивами), а потом просмотреть весь список - C++
Подскажите пожалуйста как мне создать список из моих результатов(с массивами) а потом просмотреть весь список, вот код который имеется ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2010, 00:24
Привет! Вот еще темы с ответами:

Список: связный список, в котором информация о книгах сортируется по убыванию стоимости. - C++
Друзья помогите с реализацией списка. Нужно запрограммировать связный список, в котором информация о книгах сортируется по убыванию...

Вводится число N. Создать список его делителей и вывести список на экран - C++
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; using namespace std; struct...

Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список - C++
спасайте Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список. Информация о работнике...

Сформировать список из 10 книг, используя динамическую структуру данных односвязный список - C++
друзья спасайте Сформировать список из 10 книг, используя динамическую структуру данных односвязный список С++


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.