Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2018, 08:04   #1
Александр121
Форумчанин
 
Регистрация: 17.09.2017
Сообщений: 265
По умолчанию списки

1)node** mas_tops; зачем в коде указтель на указатель?
2) mas_tops=new node *[size_of_mas_tops]; в этой строке как выделяется памяти
получается две ячейки? [указатель] [указатель на указатель]

3)void create_list(node* &top,int n) зачем тут node* &top и ссылка и указатель

Код:
#include <iostream >
using namespace std;
struct node
{
    int data; // элемент списки
    node* next; // указатель на следующей эдемент
};
 
void create_list(node* &top,int n) 
{
  int i;
  node* p;
  top = NULL;
  for (i=0;i<n;i++)
  {
    p=new node;
    cout<<"enter p->data=";
    cin>>p->data;
    p->next=top;
    top=p;
  }
}
void create_massiv_of_lists(node** x,int l)// количество всего списков
{
int i,n;
 for (i=0;i<l;i++)
   {
   cout<<"enter n=";
   cin>>n; // количество элементов в конкренотом списке
   create_list(x[i],n);
   }
}
 
void show_list(node* top)
{
   node* p;
   p=top;
   while (p)
    {
      cout<<p->data<<" ";
      p=p->next;
    }
   cout<<endl;
}
void show_massiv_of_lists(node** x,int l)
{
   int i;
   for (i=0;i<l;i++)
     {
  cout<<" list["<<i<<"]="<<endl;
  show_list(x[i]);
     }
}
 
 
int main()
{
     int size_of_mas_tops; // сколько всего списков
  // size_of_mas - size of massive of lists
  // n - number of elements of  i - list
 
  node** mas_tops; // двойно указатель на указтель типа структуры
 
 
  cout<<"enter size_of_mas = ";
  cin>>size_of_mas_tops; //считывание размера списков
  mas_tops=new node *[size_of_mas_tops]; // выделение памяти под общее количество списков
        create_massiv_of_lists(mas_tops,size_of_mas_tops);
      cout<<" massiv of lists = "<<endl;
        show_massiv_of_lists(mas_tops,size_of_mas_tops);
    }
Александр121 вне форума Ответить с цитированием
Старый 15.07.2018, 10:54   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Александр121 Посмотреть сообщение
1)node** mas_tops; зачем в коде указтель на указатель?
Для того, чтобы различать есть список или нет, чтобы память не занимать в случаи отсутствии и т.д.

Цитата:
Сообщение от Александр121 Посмотреть сообщение
2) mas_tops=new node *[size_of_mas_tops]; в этой строке как выделяется памяти
получается две ячейки? [указатель] [указатель на указатель]
Как обычно. Тут нет ничего магического. Нет, не две ячейки. size_of_mas_tops просто так написан чтоль?
p51x вне форума Ответить с цитированием
Старый 15.07.2018, 22:28   #3
Александр121
Форумчанин
 
Регистрация: 17.09.2017
Сообщений: 265
По умолчанию

улям как сложны списки
не понимаю почему тут ссылка появилась node *&top
а эти две строки что делают?

p->next=top;
top=p;


Код:
void create_list(node *&top,int n)
{
  
  node* p; // указатель
  top = NULL; // адрес следущего элемента
  for (int i=0;i<n;i++)
  {
    p=new node; // выделение ячейки под элемент
    cout<<"enter p->data=";
    cin>>p->data; //ввод конкретного элемента
    p->next=top;
    top=p;
  }
}
Александр121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с++ списки shateno_4ka Помощь студентам 1 17.12.2012 23:22
Списки Anastasia2012 Помощь студентам 1 09.12.2012 12:25
Списки BornOfOsiris Помощь студентам 0 15.05.2011 15:34
Списки C++ paladinn Помощь студентам 1 27.05.2009 12:31