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

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

Восстановить пароль Регистрация
 
pavlintseva
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 34
14.04.2011, 18:08     Вставка нового узла в двусвязный список #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
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <cstring>
 #include <math.h>
using namespace std;
 
 
struct stud {
  char fio [30]; // ФИО студента
  char gryppa [50]; // Название группы
  stud *prev;       // Указатель на предыдущую запись
  stud *next; // Указатель на следующую запись    
}; 
 
 
stud *first = NULL; // Указатель на начало списка
stud *last = NULL;  // Указатель на конец списка  
int List (void);  
 
void AddItem1 ()// добавление в голову
{
  stud*db=new stud;
 
  // создаем новую структуру-выделяем память
 
  // заполняем её
  cout << "Vvedite familiu: ";
  cin >> db->fio;
  cout << "Nazvanie gryppi: ";
  cin >> db->gryppa;
  // добавляем в список
  db->next = NULL;//обнуляем указатель на след элемент
  
  if(first != NULL)
  {db->next = first;
  first->prev= db;
  first=db;
  }
  
  else
  {db->prev = NULL;
    db->next = NULL;
    first = db;}
}  
  void AddItem2 (void)// в хвост
{
  stud*db=new stud;
 
  // создаем новую структуру-выделяем память
 
  // заполняем её
  cout << "Vvedite familiu: ";
  cin >> db->fio;
  cout << "Nazvanie gryppi: ";
  cin >> db->gryppa;
  // добавляем в список
  db->next = NULL;//обнуляем указатель на след элемент
  if (last != NULL) // если список уже существует
  {
    db->prev = last;
    db->next = NULL;
    last->next = db;
    last = db;
  }
  
  else              // если список ещё не создан
  {
    db->prev = NULL;
    db->next = NULL;
    first = db;
    last = db;
  };
  
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2011, 18:08     Вставка нового узла в двусвязный список
Посмотрите здесь:

Двусвязный список C++
C++ Вставка узла в дерево Windows Explorer
Двусвязный список C++
Двусвязный список: вставка, удаление, просмотр C++
Вставка нового элемента в линейный односвязный список перед элементом с максимальным значением ключа C++
Вставка нового элемента в массив C++
C++ Иерархия классов "Структура - Список - Кольцевой Двусвязный список"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
14.04.2011, 21:37     Вставка нового узла в двусвязный список #2
Нарисуйте узлы списка и связи между ними на бумаге и всё станет понятно.
Yandex
Объявления
14.04.2011, 21:37     Вставка нового узла в двусвязный список
Ответ Создать тему
Опции темы

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