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

Вставка элемента в n позицию связного списка - C++

Восстановить пароль Регистрация
 
masikus
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 36
13.06.2013, 11:10     Вставка элемента в n позицию связного списка #1
Форумчане можете помочь написать функцию
Вставки элемента связного списка в указанную пользователем позицию. Предусмотреть ситуацию, когда указанная пользователем позиция превышает максимальное количество существующих на данный момент элементов списка. В этом случае должно быть создано необходимое количество пустых элементов списка для дополнения до необходимого размера.

Вот сам список
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct TEmployee
{
   std::string surname;
   std::string name;
   unsigned year;
};
 
struct TNode
{
   TEmployee employee;
   TNode* next;
};
Весь код с другими функциями
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
#include <iostream>
#include <string>
 
struct TEmployee
{
   std::string surname;
   std::string name;
   unsigned year;
};
 
struct TNode
{
   TEmployee employee;
   TNode* next;
};
 
//-----------------------------------------------------------------------------
TNode* Push(TNode*& list, const TEmployee& employee)
{
   TNode* node = new TNode;
   node->employee = employee;
 
   if ((list == NULL) || (employee.year < list->employee.year))
   {
      node->next = list;
      list = node;
   }
   else
   {
      TNode* cur = list;
 
      while (cur->next && (cur->employee.year < employee.year))
      {
         cur = cur->next;
      }
 
      node->next = cur->next;
      cur->next = node;
   }
 
   return list;
}
//-----------------------------------------------------------------------------
void Clear(TNode*& list)
{
   TNode* node;
   while (list)
   {
      node = list;
      list = list->next;
      delete node;
   }
}
//-----------------------------------------------------------------------------
std::istream& operator >> (std::istream& is, TEmployee& employee)
{
    setlocale(0,"");
   std::cout << "Фамилия: ";
   is >> employee.surname;
 
   std::cout << "Имя:     ";
   is >> employee.name;
 
   std::cout << "Возраст: ";
   is >> employee.year;
 
   std::cout << std::endl;
 
   return is;
}
//-----------------------------------------------------------------------------
std::ostream& operator << (std::ostream& os, const TEmployee& employee)
{
    setlocale(0,"");
   return os << "Фамилия: " << employee.surname << std::endl
             << "Имя:     " << employee.name << std::endl
             << "Возраст: " << employee.year << std::endl;
}
//-----------------------------------------------------------------------------
std::ostream& operator << (std::ostream& os, const TNode* list)
{
   while (list)
   {
      os << list->employee << std::endl;
      list = list->next;
   }
 
   return os;
}
//-----------------------------------------------------------------------------
 
int main()
{
    setlocale(0,"");
   unsigned n;
   std::cout << "Введите количество сотрудников: ";
   std::cin >> n;
 
   TEmployee employee;
   TNode* list = NULL;
 
for(int i=0;i<n;i++)
    {
      std::cin >> employee;
      Push(list, employee);
   }
 
   std::cout << "Список:" << std::endl << list;
 
   Clear(list);
   system("pause");
   return 0;
}


Добавлено через 3 часа 40 минут
тему можно удалить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2013, 11:10     Вставка элемента в n позицию связного списка
Посмотрите здесь:

C++ Реализация связного списка
C++ вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента
Односвязные списки.Вставка элемента в заданную позицию C++
Сортировка связного списка C++
C++ Доступ к элементам связного списка
C++ сортировка связного списка
C++ Реализация связного списка
Удаление элементов из связного списка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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