Прокомментируйте Пожалуйста Готовую Программу

Тема в разделе "C/C++/C#", создана пользователем kirkl, 7 июн 2012.

  1. kirkl

    kirkl New Member

    Регистрация:
    28 апр 2012
    Сообщения:
    4
    Симпатии:
    0
    прокомментируйте пожалуйста буквально каждую строчку.(программа рабочая)
    Сформировать двунаправленный список.Добавить в него элемент с заданным номером.Написать функций для создания списка , печати, добавления элемента, функцию main()

    Код (C++):
    #include <iostream>

    using namespace std;

    struct list_t
    {
    list_t* next;
    list_t* prev;
    int data;
    };

    list_t* list_create(unsigned n)
    {
    list_t* root = NULL;
    list_t* prev = NULL;

    while(n--)
    {
    list_t* tmp = new list_t;
    cout << ">"; cin >> tmp->data;
    tmp->next = NULL;

    if(root)
    {
    tmp->prev = prev;
    prev->next = tmp;
    }
    else
    {
    root = tmp;
    tmp->prev = NULL;
    }

    prev = tmp;
    }

    return root;
    }

    void list_print(list_t* root)
    {
    while(root)
    {
    cout << root->data << endl;
    root = root->next;
    }
    }

    list_t* list_insert(list_t* root, unsigned pos)
    {
    list_t* item = root;

    while(pos && item->next)
    {
    item = item->next;
    --pos;
    }
    list_t* new_item = new list_t;
    cout << ">"; cin >> new_item->data;
    new_item->next = item;

    if(pos>0 && !item->next)
    {
    item->next = new_item;
    new_item->prev = item;
    new_item->next = NULL;

    return root;
    }

    if(item->prev)
    {
    new_item->prev = item->prev;
    item->prev->next = new_item;
    item->prev = new_item;
    }
    else
    {
    item->prev = new_item;
    new_item->prev = NULL;
    root = new_item;
    }
    return root;
    }

    int main()
    {
    int k = 0; cout << "k="; cin >> k;
    list_t* t = list_create(k);
    list_print(t);
    cout << "n="; int n; cin >> n;
    t = list_insert(t,n);
    list_print(t);

    system("pause");
    return 0;
    }
    и вот эту если можно.
    (Написать функцию для удаления столбца с номером К из динамической матрицы,содержащей целые числа)



    Код (C++):
    int** delete_column(int** matrix,unsigned m,unsigned n,unsigned k)
    {
    if(k >= n) return matrix;

    int** new_m = new int*[m];
    for(int i = 0; i < m; i++)
    {
    new_m[i] = new int[n-1];
    for(int j = 0, new_j = 0; j < n; j++)
    {
    if(j != k)
    {
    new_m[i][new_j] = matrix[i][j];
    new_j++;
    }

    }
    delete [] matrix[i];
    }

    delete [] matrix;
    return new_m;
    }
     
Загрузка...

Поделиться этой страницей