Список представляет собой линейную последовательность переменных, каждая из которых связана указателями со своими соседями. Списки бывают односвязные (каждый элемент списка имеет указатель на следующий); двусвязные (каждый элемент списка имеет указатель на следующий и на предыдущий элементы); двусвязные циклические (первый и последний элементы списка ссылаются друг на друга).
Задание
Краткие теоретические сведения
1. Изучить работу с односвязным списком, выполнив программу, представленную в правой части. Написать условие задачи.
При работе со списком используются операции косвенного обращения по указателю к структуре или к ее элементу - "." или "->".
Пример односвязного списка и операции над ним.
2. Изучить работу с двусвязным списком, выполнив программу, представленную в правой части.
Написать условие задачи и комментарии к операторам.
Ниже представлен пример работы с двусвязным списком.
#include <iostream>
using namespace std;
extern struct list a,b,c;
struct list
{ int vv;
list*next;
list*prev;
} a = {9, &b, NULL}, b = {5, &c, &a}, c={1, NULL, &b}, *px = &a;
int A[10] = {345, 435, 56, 54, 456, 345, 6, 456, 567, 45};
list *insert(list *ph, int x)
{ list *pn, *p;
pn = new list;
pn->next = pn->prev = NULL;
pn->vv = x;
if(ph == NULL) ph = pn;
else
{ for(p = ph; p->next!= NULL; p = p->next);
p->next = pn; pn->prev = p; }
return ph;
}
void scan(list*p)
{
for(; p! = NULL; p = p -> next)
cout << p -> vv << " ";
cout << endl;
}
int main()
{ px = NULL;
int i, m, k;
for(m = 0; m < 10; m++)
{ for(i = 1, k = 0; i < 10; i++)
if(A[i] > A[k]) k = i;
px = insert(px, A[k]);
A[k] = -1;
}
px = insert(px,6);
scan(px);
return 0;
}
3. В правой части записана программа, которая формирует двусвязный список для хранения информации, содержащей адреса людей (имя, улицу и город).
Информация может быть записана в файл и загружена из файла.
Написать комментарии к программе.
studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования(0.333 с)...