С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Nastas'ya
0 / 0 / 0
Регистрация: 27.03.2010
Сообщений: 5
#1

списки - C++

10.05.2010, 19:22. Просмотров 306. Ответов 0
Метки нет (Все метки)

Помогите,пожалуйста, разобраться с работой двусвязного списка,если несложно, можите представить ввиде схемы. Заранее огромное спасибо.
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
struct student    {                         //определение структурного типа
             char *fio;
             int group;
             int ses[5];
           };
                   int j,i;
 void  infor(student car) //функция печати о студенте
 
 {   static int count=0;
      cout<<"\n"<<++count<<"."<<car.fio;
      cout<<","<<car.group;
          for(j=0;j<5;j++)
     { cout<<","<<car.ses[j];
          }
 }
 
 student  stud[]={
            {"Ivanova",8890,5,5,5,5,5},
            {"Ageeva",8899,4,4,4,4,4},
            {"Sidorova",8891,5,4,4,4,5},
            {"Belyaaeva",8889,5,4,4,4,3},
            } ;
 
struct record            { student infor;//тип для элементов списка
               record *prior;
               record *next;
             };
 
void main(void)
{ clrscr();
 
        record  *begin=NULL, //указатуль начала списка
        *last=NULL, //указатель на очередь записи
        *list;      //    указатель на элемент списка
 
int n=sizeof(stud)/sizeof(stud[0]);   //количество записей в списке
 
for(int i=0; i<n; i++)   //цикл обработки исходных записей в информации
  {
    last=new(record);//создать новую запись(элемент списка)
 
    (*last).infor.fio=stud[i].fio;
    (*last).infor.group=stud[i].group;
        for(j=0;j<5;j++){
                    last->infor.ses[j]=stud[i].ses[j];
                        }
       //включить запись в список
    if(begin==NULL)  // списка ещё нет
        {
            last->prior=NULL;
            begin=last;
            last->next=NULL;
        }
 
    else  //список уже сущуствует
           {
                list=begin;
                    //цикл просмотра списка,поиск места для новой записи
            while(list)
               {//вставить новую запись перед list
               if(strcmp(last->infor.fio,list->infor.fio)<0)
            {if(begin==list) //начало списка
                {last->prior=NULL;
                 begin=last;}
                 else //вставка между записями
                                 {list->prior->next=last;
                                  last->prior=list->prior;}
                                  list->prior=last;
                                  last->next=list;
                                  break;  //выйти из цикла просмотра списка
                                 }
                                   
                 if(list->next==NULL) //перейти к следущему элементу списка
                   {      // включить запись в конец списка
                       last->next=NULL;
                       last->prior=list;
                       list->next=last;
                       break;
                                           //выйти из цикла просмотра списка
                   }
                  list=list->next; //перейти к следующим элементам списка
                } //конец цикла просмотра списка(поиск места для новой)
        }   //включение записи выполнено
  }    //конец цикла обработки исходных данных
 
 list=begin; //печать в алфавитном порядке
 cout<<"\n";
   while(list)
     {
         infor(list->infor);
         list=list->next;
     }
  getchar();    
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2010, 19:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос списки (C++):

Списки, как склеить списки между собой? - C++
Ребят, привет всем, есть код, в классе которого описаны несколько методов: добавление элемента в список, удаление и просмотр списка, дак...

Списки - C++
Всем привет!) У меня есть вопрос..как создать два списка? Просто мне нужно из списка В переместить содержимое в список А. Как это сделать и...

C++ списки - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;list&gt; using namespace std; int main(void) { list&lt; int &gt; l,...

списки - C++
написать функцию, удаляющую первый отрицательный элемент списка.

Списки в С++ - C++
#include&lt;iostream.h&gt; #include &quot;time_1.h&quot; #include&lt;time.h&gt; #include&lt;windows.h&gt; char* Rus (const char* text); class List { ...

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2010, 19:22
Привет! Вот еще темы с ответами:

Списки - C++
Здравствуйте! Помогите пожалуйста с программой.... Надо вывести список поездов , а потом вывести поезда которые отправляются в...

Списки С++ - C++
Помогите,пожалуйста......в списке продублировать все отрицательные элементы(одна функция) и удалить из списка все чётные элементы(другая...

Списки - C++
Помогите пожалуйста с задачей: В списке L найти такой элемент &quot;y&quot; (если существует), что &quot;y&quot; больше всех предыдущих и меньше всех...

Списки - C++
Работа со списками( объединение, удаление, вставка и.т.п). при запуске выдает ошибки. :-| устала уже с ней( С++, Builder 6 ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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