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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2014, 20:11   #1
CppForYou
Пользователь
 
Регистрация: 08.03.2013
Сообщений: 37
По умолчанию комментировать строки

нашел программу в интернете, только ничего не понял) можете прокомментировать каждую строку (ну или хотя бы каждую функцию)

Динамические структуры данных (для всех вариантов)
Связанный линейный список — это набор узлов Node (тип данных структура(С++) или запись(Pascal)), каждый из которых имеет поле данных и поле адреса - указатель (ссылку) на следующий узел в списке. Тот, в свою очередь, тоже содержит поле данных и ссылку на продолжение списка. Последний узел списка содержит значение NULL (Nil), т.е. уже ни на что не ссылается. Начало списка формирует переменная head типа “указатель”, содержащая адрес первого узла списка. Поле данных еще называют информационной частью списка, поле адреса – адресной частью.
struct Node {
int data; // поле данных
Node* link; // поле адреса – указатель на следующий узел
};
Node* head=NULL;

Опишите функции типовых операций с списками:
1. Функция AddHead (int d) добавление узла в голову списка;
2. Функция AddEnd (int d) добавление узла в конец списка;
3. Функция ShowList() вывод списка на экран;
4. Функция Search( int d) поиск узла с заданным значением в некотором поле данных;
5. Функция FindNode ( int n) поиск узла с заданным номером;
6. Функция InsertNode(int d, int n) добавление нового узла непосредственно перед узлом с заданным значением в некотором поле;
7. Функция RemoveNode(int d) удаление узла с заданным значением в некотором поле;
8. Функция RemoveAll() удаление всего списка ;

Код:
#include <stdio.h>
 
typedef struct MyList
{
    int d;
    MyList* pNext;
} MYLIST;
 
MYLIST* pList = NULL;
MYLIST* pListTail = NULL;
 
void AddHead(int d);
void AddTail(int d);
int Find(int i);
void ShowList();
 
int main(void)
{
    AddHead(10);
    AddTail(15);
    AddHead(20);
    AddTail(16);
    AddHead(30);
    AddTail(17);
    AddHead(40);
    AddTail(18);
 
    ShowList();
 
    printf("found = %d\n",Find(4));
 
    _getch();
 
    return 0;
}
 
void AddHead(int d)
{
    MYLIST* pListItem = new MYLIST;
    pListItem->d = d;
    if (pList != NULL) pListItem->pNext = pList;
    else { pListTail = pListItem; pListItem->pNext = NULL; }
    pList = pListItem;
}
 
void AddTail(int d)
{
    MYLIST* pListItem = new MYLIST;
    pListItem->d = d;
    pListItem->pNext = NULL;
    if (pList == NULL) 
        { pListTail = pListItem; pList = pListTail; }
    else { pListTail->pNext = pListItem; pListTail = pListItem; }
}
 
int Find(int i)
{
    int n = 0, ret = -1;
    MYLIST* pMyList = pList;
    while (pMyList != NULL)
    {
        if (n == i) ret = pMyList->d;
        pMyList = pMyList->pNext; n++;
    }
 
    return ret;
}
 
void ShowList()
{
    for (MYLIST* pMyList = pList; pMyList != NULL; 
        pMyList = pMyList->pNext)
        printf("%d\n",pMyList->d);
}
CppForYou вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pascal перенос матрицы в одномерный массив комментировать код Izobara Помощь студентам 5 21.01.2013 18:25
Двумерный массив А. Если заданное число больше первой цифры столбца, то этот столбец удаляется. Комментировать листинг на Паскаль Altana Помощь студентам 0 29.05.2012 11:30
От комментировать задачу Valik93 Помощь студентам 2 20.09.2011 18:13
Комментировать код Delphi Uli9 БД в Delphi 3 31.05.2010 17:12
Комментировать код Delphi Uli9 Помощь студентам 1 30.05.2010 13:35