Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2012, 11:51   #1
poison777
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 17
По умолчанию Сортировка слиянием c++

Необходимо слить 2 упорядоченных по не возрастанию списка в один, так же упорядоченный по не возрастанию , построив новый список. с++

Написала, но сортировка слиянием в основной программе, сама понимаю что, написана не правильно, но к сожалению не получается разобраться самой. Помогите, пожалуйста, кто чем можетБуду очень благодарна..

Код:

#pragma argsused
#include <iostream.h>
#include <math.h>
struct node {
 int body;

 node* next;};

struct list {
 node* head;
 node* tail;
 list();
 void Add(int l);
 void Print();
 void Sort();};


list::list(){
        head=NULL;}

void list::Add(int l){
        node* c=new node;
        c->next=NULL;
        if (head==NULL)
          head=c;
        else
          tail->next=c;
        c->body=l;
        tail=c;}

void list::Print(){
        node* t=head;
        while (t!=NULL){
                cout << t->body << " ";
                t=t->next;}
        }

void main()
{list spisok1,spisok2,spisok3;int n1=0, n2=0;
cout <<"vvedite kolichestvo el-ov i 1ii spisok, yporiadochenni po nevozrastaniy";
int p;
cin >> p;
for (int i=1; i<=p; i++){
  cout << i << ": ";
  int l;
  cin >> l;
  spisok1.Add(l);
  n1++;}


 cout <<"vvedite kolichestvo el-ov i 2oi spisok, yporiadochenni po nevozrastaniy";
 cin >> p;
for (int i=1; i<=p; i++){
  cout << i << ": ";
    int l;
  cin >> l;
  spisok2.Add(l);
  n2++;}


cout << "\n1 spisok   ";
spisok1.Print();

cout <<"\n2 spisok   ";
spisok2.Print();


int i=0, j=0;
  while( i+j < n1+n2 )
    {
        if( (j>=n2) || ( (i<n1) && (spisok1->body>=spisok2->body) ) )
        {
            spisok3->body = spisok1->body;
            spisok1=spisok1->next;
              spisok3=spisok3->next;

            i++;
        } else {
            spisok3->body=spisok2->body;
            spisok2=spisok2->next;
              spisok3=spisok3->next;

            j++;
        }
    }

 cout <<"\n3 spisok   ";
spisok3.Print();


cin >> p;

}
Ну пожаалуйста, помогитее

Последний раз редактировалось poison777; 25.04.2012 в 12:57.
poison777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка слиянием C++ PinkPink Помощь студентам 0 05.12.2011 20:07
сортировка слиянием (C++) DarkAltair Помощь студентам 7 11.10.2011 21:12
Сортировка слиянием C++ PinkPink Помощь студентам 3 10.10.2011 22:44
СОРТИРОВКА СЛИЯНИЕМ spawn969 Помощь студентам 5 12.05.2011 01:03
Сортировка слиянием maxflint Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 05.12.2009 20:41