BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Затруднение свързано със подреден списък, Списъци
black0wl
Публикувано на: 04-04-2018, 13:29
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 7
Регистриран на: 04.04.18



Здравейте, имам огромно нужда от нечия помощ за тази програма, програмата има за цел да създаде подреден двусвързан списък, НО без да се използва готова библиотека <list>,тоест сам да си направя функцията, въвеждането и извеждането от списък става лесно, но въвеждането със подредба обърква нещата тотално за мен, ще съм благодарен ако някой помогне! icon_smile.gif
Това е кода ми досега:
CODE

#include <iostream>
using namespace std;

struct elem{
      int key;
      elem *next;
      elem *prev;
}*start=NULL,*q;

void add_sort(int n){
  elem *p=start;
 
  if(start){
            while(p->key<n||p->next)
             p=p->next;
          
           if(p->next==NULL){
                 
                 if(p->key>=n){
                   q=new elem;
                q->key=p->key;
                q->next=p->next;
                q->prev=p;
                if(p)
                p->next=q;
                p->key=n;
                   }else{
                         q=new elem;
              
                  q->next=p->next;
                  p->next=q;
                  q->prev=p;
                       q->key=n;                   
                   }
             }else{
                   
                   if(p->prev){
                   q->key=n;
                   q->prev=p->prev;
                   q->next=p;
                   p->prev=q;
             }else{
                   q->key=n;
                   q->prev=NULL;
                   q->next=p;
                   p->prev=q;
                   start=q;
             }}
        
  }else{
        start=new elem;
        start->key=n;
        start->next=p;
        start->prev=NULL;
        if(p){
              p->prev=start;
         }
  }
}

int print(int &n){
      
      
            elem *p = start;
      if(start)
      {
            while(p->next)
            p=p->next;
            n=p->key;                                            
            if(p->prev)
            p->prev->next=NULL;
            else
            start=NULL;
            delete p;
            return 1;
}else return 0;
}

int main(void) {
      int n,br=0;
      cout<<endl<<"Enter the number of elements: ";
      cin>>br;
      cout<<endl<<"Enter elements: \n";
      for(int i=0;i<br;i++){
            cin>>n;
            add_sort(n);
      }
      for(int i=0;i<br;i++){
            print(n);
            cout<<n<<" ";
      }
      
      
      
}


Това мнение е било редактирано от black0wl на 04-04-2018, 13:32
PMEmail Poster
Top
SuN
Публикувано на: 04-04-2018, 14:05
Quote Post


Group Icon
Име: Финто Нешън
Група: Администратор
Ранг: Почетен член

Мнения: 5816
Регистриран на: 27.01.05



QUOTE
но въвеждането със подредба обърква нещата тотално за мен, ще съм благодарен ако някой помогне!

0. Вкарваш елемента някак си.
1. Направи си втора празна опашка.
2. Обхождаш първата като помниш най-големия/малкия/ елемент досега.
3. Вкарваш най-големия/малък/ елемент във втората опашка и го махаш от първата.
4. Когато първата опашка остане без елементи може да я изтриеш.

Това мнение е било редактирано от SuN на 04-04-2018, 14:07


--------------------
Копирай лесно ударено и - ѝ Ѝ
Замърсяване на въздуха в София - http://aqicn.org/city/bulgaria/sofia/druzhba/
PMEmail Poster
Top
black0wl
Публикувано на: 04-04-2018, 14:06
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 7
Регистриран на: 04.04.18



QUOTE (SuN @ 04-04-2018, 14:05)
QUOTE
но въвеждането със подредба обърква нещата тотално за мен, ще съм благодарен ако някой помогне!

Направи си втора празна опашка.
Обхождаш първата като помниш най-големия/малкия/ елемент досега.
Вкарваш най-големия/малък/ елемент във втората опашка и го махаш от първата.
Когато първата опашка остане без елементи може да я изтриеш.

трябва да използвам единствено списъци.
PMEmail Poster
Top
SuN
Публикувано на: 04-04-2018, 14:08
Quote Post


Group Icon
Име: Финто Нешън
Група: Администратор
Ранг: Почетен член

Мнения: 5816
Регистриран на: 27.01.05



Замени споменатото от мен "опашка" със "списък". Телефона е крив и опашка се пише по-лесно.icon_smile.gif

Това мнение е било редактирано от SuN на 04-04-2018, 14:09


--------------------
Копирай лесно ударено и - ѝ Ѝ
Замърсяване на въздуха в София - http://aqicn.org/city/bulgaria/sofia/druzhba/
PMEmail Poster
Top
black0wl
Публикувано на: 04-04-2018, 14:09
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 7
Регистриран на: 04.04.18



QUOTE (SuN @ 04-04-2018, 14:08)
Замени споменатото от мен "опашка" със "списък". Телефона е крив и опашка се пише по-лесно.icon_smile.gif

аз трябваше да го напиша в главния текс, не мога да използвам помощни списъци или масиви.
PMEmail Poster
Top
SuN
Публикувано на: 04-04-2018, 14:11
Quote Post


Group Icon
Име: Финто Нешън
Група: Администратор
Ранг: Почетен член

Мнения: 5816
Регистриран на: 27.01.05



Това ясно, но нали лесно може да вмъкваш и изтриваш елемент? Ползвай твоите функции.


--------------------
Копирай лесно ударено и - ѝ Ѝ
Замърсяване на въздуха в София - http://aqicn.org/city/bulgaria/sofia/druzhba/
PMEmail Poster
Top
black0wl
  Публикувано на: 04-04-2018, 14:13
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 7
Регистриран на: 04.04.18



при използването на функциите които имам, мога само изведа подредбата която съм въвел, например: 1,2,3,4,5 и извежда по същия начин...но не вършат никаква работа когато трябва да е подреден списък от 6,5,2,8,9,1 да стане 1,2,5,6,8,9...и там е проблема не знам как да подходя и как да реализирам кода за сортиране, без да крашне програмата или въобще да тръгне
PMEmail Poster
Top
miron
Публикувано на: 04-04-2018, 14:31
Quote Post



Име: Мирослав Николов
Група: Потребител
Ранг: Редовен член

Мнения: 593
Регистриран на: 26.04.05



Много сложно си го написал. Виж тук колко е по-просто
PM
Top
black0wl
Публикувано на: 04-04-2018, 14:34
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 7
Регистриран на: 04.04.18



QUOTE (miron @ 04-04-2018, 14:31)
Много сложно си го написал. Виж тук колко е по-просто

В случая не е това отговора на въпроса ми, задачата не трябва да става със готово съдържание, а трябва сам да напиша всичко, иначе ако можех да ползвам готовите неща нямаше изобщо да задавам този въпрос във форума.
PMEmail Poster
Top
SuN
Публикувано на: 04-04-2018, 15:08
Quote Post


Group Icon
Име: Финто Нешън
Група: Администратор
Ранг: Почетен член

Мнения: 5816
Регистриран на: 27.01.05



Какво според теб значи готово съдържание?


--------------------
Копирай лесно ударено и - ѝ Ѝ
Замърсяване на въздуха в София - http://aqicn.org/city/bulgaria/sofia/druzhba/
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2018 | BG Development | All Rights Reserved
RSS 2.0