Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
gary jules
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 11
#1

Сортировка списка прямыми включениями (вставками)

30.05.2012, 16:01. Просмотров 1082. Ответов 1
Метки нет (Все метки)

Ребята кто может помогите с курсовой.

Пытаюсь написать класс двунаправленного списка. Проблема возникла с функцией добавления addToList. При добавлении нового элемента он должен проходить по списку до того как найдет нужное место, в результате получится отсортированный список.

Дело в том что при выводе первый элемент списка не выводится то есть он где то теряется или еще что. Не могу найти ошибку.

Поправьте код пожалуйста!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
// элемент списка 
struct Element
{
 public:
        int number;
        char line[15];
        
        Element *next;  // указатели на следующий
        Element *pred;  // и на предыдущий элементы списка
};
typedef Element *Elp;
 
// класс
class List
{
 public:
        Element *pHead;      
        Element *pPrev;     
        int countElem;        
     
        List();           
        ~List();                  
     
        void addToList(int n, char str[15]);          
        void printList();                         
        void delAllList();                        
};
 
 
// реализация функций
 
List::List()    // конструктор
{
    pHead = NULL;
    pPrev = NULL;
    countElem = 0;
}
 
List::~List()   // деструктор
{
    delAllList();
}
 
 
void List::addToList(int n, char str[15])        // функция добавления
{
    Element *temp = new Element;                 //создается временный элемент
    Elp point;
         
    if(pHead == NULL) {
             temp->pred = NULL;          
             temp->next = NULL;          
             pHead = temp;               
    }
    
    else
    
    {                            
        temp->number = n;
        strcpy(temp->line, str); 
    
            if (pHead->number > temp->number) 
            {
                     temp->next = pHead;
                     pHead->pred = temp;
                     temp->pred = NULL;
                     
                     pHead = temp;
            }
        
        else 
            {       
                   point = pHead; 
                   while(temp->next && (temp->number > point->number))
                            point = point->next;
                   point->pred->next=temp;
                   temp->next=point;
                   temp->pred = point->pred;
                   point->pred = temp;  
            }
    }
}
 
void List::printList()                   // функция вывода на экран
{
    Element *pTemp = pHead;            
    if (pHead == NULL)                   
    {
        cout << "Fail pust";            
    }
    else                               
    {
        cout << "Block: " << endl;      
        while(pTemp->next)              
        {
            cout << pTemp->number << " ";        
            cout << pTemp->line << endl;         
            pTemp = pTemp->next;       
        }
    }
    cout << endl;
}
 
void List::delAllList()                 
{
    while(pHead != NULL)           
    {
        Element *pTemp = pHead;       
        pHead = pHead->next;           
        delete pTemp;                   
    }
 
    pHead = NULL;
    pPrev = NULL;
}
 
 
main() {
       List A;
       A.addToList(5, "teststring4");
       A.addToList(2, "teststring4");
       A.addToList(3, "teststring4");
       A.addToList(3, "teststring4");
       A.addToList(5, "teststring4");
       A.addToList(7, "teststring4");
       A.addToList(7, "teststring4");
       A.addToList(4, "teststring4");
       
       A.printList();
 
       system("pause");
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Миниатюры
Сортировка списка прямыми включениями (вставками)  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2012, 16:01
Ответы с готовыми решениями:

Сортировка списка бинарными вставками
Добрый день. Скажите в чем проблема. Вроде все правильно написано. код...

Сортировка двусвязного списка вставками
Добрый день, есть готовый двусвязный список. Нужно было реализовать сортировку...

Сортировка простыми включениями
Есть массив, его нужно отсортировать простыми включениями(вставками). У меня...

Сортировка вектора по полю(Сортировка вставками)
Здравствуйте! Нужно написать сортировку вектора по полю weight класса tomato....

Сортировка Шелла и сортировка вставками
Напишите программу для: 1)Сортировка вставкой 2)сортировка Шелла

1
gary jules
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 11
30.05.2012, 17:24  [ТС] #2
Ну помогите ррребят!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2012, 17:24

Сортировка вставками
Где-то ошибка в цикле... помогите) ... int array = {3, 2, 1}, min = 0, a...

Сортировка вставками
Доброго времени суток, форумчане. Подскажите, пожалуйста, почему при первой...

Сортировка вставками
Помогите плиз немогу написать программу, незнаю с чего начать и что писать,...


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

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

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