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

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

Войти
Регистрация
Восстановить пароль
 
Faustik
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 3
#1

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

03.06.2012, 19:44. Просмотров 281. Ответов 4
Метки нет (Все метки)

Может кто объяснить работу функции
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++ Прошу объяснить работу готовой программы
C++ Объяснить работу двух кодов
Объяснить результат и работу указанных строк C++
Объяснить работу Memcpy C++
Объяснить работу кода C++
Объяснить на примере работу оператора ветвления if else C++
C++ Рекурсия, объяснить работу программы
C++ Объяснить работу кода
Объяснить работу функции, вычисляющей сумму цифр числа C++
C++ Объяснить работу оператора switch

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,515
03.06.2012, 20:01     Объяснить работу функции #2
Добавление элемента в односвязный список происходит. А что именно вам непонятно?
Faustik
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 3
03.06.2012, 20:03  [ТС]     Объяснить работу функции #3
добавление понятно , а вот что находится в переменной t=head;
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,515
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     Объяснить работу функции
Ответ Создать тему
Опции темы

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