Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_po_OAiPR.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
1.23 Mб
Скачать

137. Операции со списками при последовательном хранении

при выборе метода хранения линейного списка следует учитывать какие будут выполняться операции и с какой частотой, время их выполнения и объем памяти для хранения списка, пусть имеется линейный список с целыми значениями и для его хранения используются массив в (с числом элементов 100), а количество элементов в списке указывается переменной l. Реализации указанных операций начинается с объявлений.

Float d[100];

Int I,j,l;

1)Печать значения первого элемента (узла)

If(i<0||i>1)printf(“/n ‘нет элемента”

Else printf (“d[%d]=%f”,I,d[i]);

2)удаление элемента следующего за итым узлом.

If (i>=l)printf(“/n нет следующего”)’

l--;

for(j=i+1;j=l)printf (“/ нет соседа”)

else printf (“/n %d%d”,d[i-1],d[i+1]);

3)добавление нового элемента new за итым узлом.

If (i==l||i>l)printf (“/n нельзя добавить”/);

Else

{for (j=1;j>i+1;j--)d[j+1]=d[j];

D[i+1]=new;

L++;

}

4)частичное упорядочивание списка с элементами К1,К2,…Kl->K1’,K2’…Ks,K1,Kt’’…K’’’,s+t+1

Хште е=1ж

Float aux;

For (i=2,j<l;i++)

If (d[i]=2,j--)d[j]=d[j-1];

T++;

}d[i]=aux;

Количество действий для выполнения этих операций можно определить соотношением для 1 и 2 действия это l, для операции 3 и 4 l, а для 5 операции L2.

138. Операции со списками при связанном хранении

При простом связном хранении каждый элемент списка представляет собой структуру nd состоящую из двух элементов а именно переменная val для хранения элемента списка и n это указатель на структуру содержащую следующий элемент списка на первый элемент списка указывает dl, для всех операций над списком используется описание

Typedef struct not

{float val;

Struct nd*n;}ND;

Int I, j;

ND*dl,*r,*p;

Для реализации операций могут использоваться следующие фрагменты программ

1)печать значения итого элемента r=dl;j=1;

While (r!=nulff j++n;

If (r==noll)printf (/n нет узла %d”);

Else printf (/n элемент %d, равен %f;I,r->val);

2)печать обоих соседей узла (элемента) определяемый указателем p

3)удаление элемента следующего за узлом на который указывает p

4)вставка нового узла со значением u за элементом определенным p

5)Частичное упорядочение списка

139. Организация двух связанных списков

связанное хранение линейного списка, называется списком с двумя связями или двух связным списком, если каждый элемент хранения имеет два компонента указателя (ссылки на предыдущий и последующий элементы линейного списка).

В программе двух связный список можно реализовать с помощью описаний

Tgpedeа struct ndd

{float val; /*значение элементов*/

Struct ndd*n; /*указатель на следующий элемент*/

Struct ndd*m; /*указатель на предыдущий элемент*/

} NDD;

NDD*dl,*p,*r;

Вставка нового элемента (нового узла) со значение new за элементом определяемым указателем Р осуществляется при помощи операторов:

R=malloc(NDD);

r->val=new;

r->n=p->n;

(p->n)->m=r;

p->=r;

140. Стеки и очереди

В зависимости от метода доступа к элементам линейного списка различают разновидности линейных списков называемые стеком, очередью, и двух сторонней очередью.

Стек – это конечная последовательность некоторых однотипных элементов, среди которых могут быть и одинаковые (скалярная переменная, массив, структура или объединение).

Стек обозначается в виде (S=) и представляет динамическую структуру данных, её количество элементов заранее не указывается и в процессе работы, как правило, изменяется. Если в стеки изменений нет, то он называется пустым и обозначается <>. Допустимыми операциями над стеком являются:

1)проверка стека на пустоту S=<>

2)добавление нового элемента Sn+1 это преобразование<S1…Sn> в <S1…Sn+1>

3)изъятие последнего элемента из стека <S1,S2…Sn> в <S1…Sn-1>

4)доступ к его последнему элементу если стек не пуст Sn

Операция добавления и доступа выполняются только в конце спиcка.

Стек можно представить как стопку книг.

Очередь

Это линейный список, но элементы удаляются из начала списка, а добавляются в конце списка (очередь в магазине).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]