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

Объяснить работу функции - C++

Восстановить пароль Регистрация
 
Faustik
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 3
03.06.2012, 19:44     Объяснить работу функции #1
Может кто объяснить работу функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void zagalovok()
{
  Node *t;
  head=new Node();
  t=head;
  int V;
  cout<<"Введите список элементов:\n ";
  cin>>V;
  while  (cin.good())
  {   t->next = new Node();
     t = t->next; t->elem = V;
        cin>>V;}
  t->next = head->next;
}
точнее что хранится в t=head; указатель на адрес заголовка???
вот вся прога

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
struct Node
{
    int elem;
    Node * next;
};
Node*R,*head;
//Ввод списка элемементов 
void zagalovok()
{
  Node *t;
  head=new Node();
  t=head;
  int V;
  cout<<"Введите список элементов:\n ";
  cin>>V;
  while  (cin.good())
  {   t->next = new Node();
     t = t->next; t->elem = V;
        cin>>V;}
  t->next = head->next;
}
void Vivod()
//вывод содержимого списка без заголовка
{
  Node *t;
  t = head->next;
  cout<<"Элементы списка: ";
  if  (t!=NULL)
  {
      cout<<(t->elem)<<" "; t = t->next;
      while  (t!=head->next)
    { cout<<t->elem << " "; t = t->next; }
  }
  else  cout<<"Список пуст";
  cout<<"\n";
}
//находим элемент в списке
Node *Find(int V)
{   Node *t;
    int help=1;
    R = NULL; t =head->next;
    if (t!=NULL){
    while (t->next!=head->next && R==NULL)
    { if  (help==V) R = t;
      else { t = t->next;help++;}
 
        if  (R==NULL && help==V)
            R = t;}}
    return R;
}
//добавление элементов
void Add ( int V)
    {
     Node *h;
  h =new Node();
  h->elem = V; h->next = R->next;
  R->next = h;
}
void Del()
//Удаление элемента  
{
  Node *z,*h;
  if  (R->next!=head->next)
  {
      h = R->next;
      R->elem = R->next->elem;
      R->next = R->next->next;
      delete h;}
  else  if  (R->next==R)
        { //если один элемент
           h = head->next; head->next = NULL;
          delete h;  }
       else
       {
         //удаление последнего эл-та
         z = head; h = head->next;
         while  (h!=R)
           { z = h; h = h->next; }
         z->next = z->next->next;
         delete h;
        }}
//Mеню
int main()
{ 
  int V;
  char ch;
    setlocale(LC_ALL, "Russian_Russia.1251");   
    zagalovok();
    cin.clear();
    cin.ignore(255, '\n');
    while(1)
    {
        Vivod();
   cout << "Меню" << endl;
        cout << "1 - Добавление" << endl;
        cout << "2 - Удаление" << endl;
        cout << "3 - Выход" << endl;
        cout << "==============" << endl;
    cin>>ch;
    cin.ignore(255, '\n');
    switch(ch){
    case '1':cout<<"Введите индекс элемента перед которым добавить новый элемент:";
        cin>>V;cin.ignore(255, '\n');
        if (!cin.good()) {
        cout << "Ошибка ввода";
        cin.clear();           
        cin.ignore(255, '\n');}
        else if (Find(V)==NULL) cout<<"Ошибка ввода\n";
        else
            cout<<"Введите новый элемент: ";
            cin>>V;
            cin.ignore(255, '\n');
            if (!cin.good()) {
            cout << "Ошибка ввода" ;
            cin.clear();           
            cin.ignore(255, '\n');
                            }
            else{Add(V);
            cout<<"Элемент добавлен нажмите Enter";}
            system("cls");
    break;
        case '2':cout<<"Введите удаляемый элемент элемента: ";
            cin>>V;cin.ignore(255, '\n');
            if (!cin.good()) {
            cout << "Ошибка ввода";
            cin.clear();           
            cin.ignore(255, '\n');
                            }
            else
            if (Find(V)==NULL) cout<<"Ошибка ввода\n";
            else {Del();cout<<"Элемент удален\n";}
                system("cls");
            break;
    case '3':
        return 0;
            break;
        default: {cout<<"Ошибка ввода";
                        system("cls");}}}
    cin.clear();
    return 0;
        }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2012, 19:44     Объяснить работу функции
Посмотрите здесь:

Объяснить работу программы C++
Объяснить работу программы C++
C++ Объяснить работу двух кодов
Объяснить работу Memcpy C++
Объяснить работу кода C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,508
03.06.2012, 20:01     Объяснить работу функции #2
Добавление элемента в односвязный список происходит. А что именно вам непонятно?
Faustik
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 3
03.06.2012, 20:03  [ТС]     Объяснить работу функции #3
добавление понятно , а вот что находится в переменной t=head;
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,508
03.06.2012, 20:14     Объяснить работу функции #4
Ну t - указатель на узел списка. head- указатель на голову списка. Когда мы пишем t=head мы заставляем t указывать на голову списка.
Faustik
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 3
03.06.2012, 20:24  [ТС]     Объяснить работу функции #5
функция new же выделяет память под переменную нужного типа и возвращает указатель на её адрес, я же выделяю сначала память потом присваиваю t указатель на голову, но голова же ещё неизвестна, значит в t содержится указатель на адрес будущего заголовка? правильно понимаю?
Yandex
Объявления
03.06.2012, 20:24     Объяснить работу функции
Ответ Создать тему
Опции темы

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