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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2012, 20:09   #1
gary jules
Новичок
Джуниор
 
Регистрация: 30.05.2012
Сообщений: 1
Стрелка Сортировка списка прямыми включениями (вставками)

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

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

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

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

Код:
#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");
}
Изображения
Тип файла: png 2012-05-30_160019.png (1.6 Кб, 55 просмотров)
gary jules вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка вставками Mahoyn93 Общие вопросы C/C++ 0 20.05.2012 20:24
Сортировка списка методом выбора и простыми вставками Bottane4ka Помощь студентам 0 24.03.2012 20:35
Сортировка однонаправленого списка вставками. gvilon Паскаль, Turbo Pascal, PascalABC.NET 0 08.11.2011 23:39
сортировка вставками Irk-O Помощь студентам 1 16.10.2010 23:11
Сортировка вставками blind0482 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 02.12.2009 13:15