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

Из односвязного списка в двусвязный - C++

Восстановить пароль Регистрация
 
squi
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 21
18.09.2013, 12:55     Из односвязного списка в двусвязный #1
Помогите, кусок переделать в двусвязный список.
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
#include <iostream>
using namespace std;
    
struct Node 
{
    int data;
    Node *next;
};
void print (Node *); 
 
int main()
{
    setlocale (LC_ALL,"Russian");
   
    Node *head=NULL;                          
    Node *put, *spisok, *last;                
    int nomer, vstavka, i, element;         
    
    cout << "Введите количество элементов: ";
      cin >> element;
   
    for (i=0; i<element; i++)
    {
        spisok=new Node;                           
     cout << "Элемент "<<i+1<<": ";
        cin>>spisok->data;                        
        spisok->next=NULL;                        
        
         if (head==NULL)                     
            head=spisok;                         
       
        else                               
        last->next=spisok;          
             last=spisok;                            
   }
 
    print (head);
 
system ("pause");
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
18.09.2013, 13:15     Из односвязного списка в двусвязный #2
Для двусвязного списка надо еще один указатель внутри структуры

C++
1
2
3
4
5
6
struct Node 
{
    int data;
    Node *next;
    Node *prev; // указатедль на предыдущий элемент
};
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
18.09.2013, 13:19     Из односвязного списка в двусвязный #3
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
#include <iostream>
    
struct Node 
{
    int data;
    Node* previous;
    Node* next;
};
 
void print(const Node* node)
{
    while( node )
    {
        std::cout << node->data << " ";
        node = node->next;
    }
    std::cout << std::endl;
}
 
int main()
{
    Node* head = NULL;
    Node* tail = NULL;
    int elements;         
    
    std::cout << "Enter number of elements: ";
    std::cin >> elements;
   
    for( int i = 0; i < elements; ++i )
    {
        Node* newNode = new Node;                           
        std::cout << "Element " << i+1 << ": ";
        std::cin >> newNode->data;
        newNode->next = NULL;
        newNode->previous = tail;
        
        if( !head )
        {
            head = tail = newNode;
        }
        else
        {
            tail->next = newNode;
            tail = newNode;
        }
    }
 
    print( head );
    
    while( head )
    {
        tail = head;
        head = head->next;
        delete tail;
        tail = NULL;
    }
 
    return 0;
}
squi
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 21
18.09.2013, 15:08  [ТС]     Из односвязного списка в двусвязный #4
Цитата Сообщение от vodilawofer Посмотреть сообщение
Для двусвязного списка надо еще один указатель внутри структуры

C++
1
2
3
4
5
6
struct Node 
{
    int data;
    Node *next;
    Node *prev; // указатедль на предыдущий элемент
};
как образовать структуру двусвязного списка я знаю, мне нужно переделать кусок кода под него.
Yandex
Объявления
18.09.2013, 15:08     Из односвязного списка в двусвязный
Ответ Создать тему
Опции темы

Текущее время: 23:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru