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

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

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

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

30.05.2012, 16:01. Просмотров 904. Ответов 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");
}
Миниатюры
Сортировка списка прямыми включениями (вставками)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2012, 16:01     Сортировка списка прямыми включениями (вставками)
Посмотрите здесь:

Сортировка вставками C++
Сортировка вставками C++
C++ Сортировка вставками
Сортировка двусвязного списка вставками C++
Сортировка вставками. C++
C++ Сортировка вставками
Сортировка простыми включениями C++
Сортировка вставками c++ C++
C++ Сортировка вставками
C++ Сортировка вставками
C++ Сортировка вставками
C++ Сортировка вставками

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gary jules
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 11
30.05.2012, 17:24  [ТС]     Сортировка списка прямыми включениями (вставками) #2
Ну помогите ррребят!
Yandex
Объявления
30.05.2012, 17:24     Сортировка списка прямыми включениями (вставками)
Ответ Создать тему
Опции темы

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