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

списки - C++

Восстановить пароль Регистрация
 
Nastas'ya
0 / 0 / 0
Регистрация: 27.03.2010
Сообщений: 5
10.05.2010, 19:22     списки #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
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();    
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2010, 19:22     списки
Посмотрите здесь:

C++ C++ списки
C++ Списки в С++
C++ списки
Списки C++
C++ списки
С++ списки C++
C++ Списки
Списки в c++ C++

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

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

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