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

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

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

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

03.06.2012, 19:44. Просмотров 298. Ответов 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     Объяснить работу функции
Посмотрите здесь:

Работа функции qsort - объяснить работу функции - C++
#include&lt;iostream&gt; #include&lt;cstdlib&gt; int mysort(const void *arg1, const void *arg2); int main() { const short ARR_SIZE=5; int...

Объяснить работу функции, вычисляющей сумму цифр числа - C++
Добрый вечер. Наткнулся на код, который работает , но не понял как работает функция getSumOfNumber . Программа для суммы цифр числа от 0...

Объяснить работу кода - C++
Подскажите пожалуйста как работает этот код при F(9). На экран выводит 131159, но как это происходит? void F(int n) { if (n &gt; 0) ...

Объяснить работу кода - C++
Объясните что происходит в данном коде #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include&lt;cmath&gt; int _tmain(int argc, _TCHAR*...

Объяснить работу программы - C++
Здравствуйте. Такая задача была: Нашёл на форуме подходящую рабочую программу, но не могу полностью понять (и объяснить), как она...

Объяснить работу конструктора - C++
простите за тупое название темы Добрый вечер, возникла проблема в изучении деструкторов целом проблема не самое в деструкторов, а в...

Объяснить работу программы - C++
Во введенном слове подсчитать количество различных пар букв. Например, в слове babacabacd 5 различных пар букв, ba – 3 пары, ac – 2 пары. ...

Объяснить работу Memcpy - C++
Доброго времени суток! Можете пояснить работу memcpy под C++? Что-то у меня определённо работает не так. Например такой код: ...

Объяснить работу двух кодов - C++
char a={&quot;kakogo hrena?&quot;}; cout&lt;&lt;a&lt;&lt;endl; // kakogo hrena? и int a={11,22,33}; cout&lt;&lt;a&lt;&lt;endl; // 001cfb50 Собсно почему в...

Рекурсия, объяснить работу программы - C++
Вообщем мое ( пока самостоятельное ) обучение продолжается и попал я вот на такую замечательную тему как: &quot;рекурсия&quot;. вообщем все действия...


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

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

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