Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Struct+List ++

.pdf
Скачиваний:
16
Добавлен:
03.06.2015
Размер:
1.15 Mб
Скачать

Структура списка

линейный односвязный список

линейный двусвязный список

11

кольцевые двусвязные списки

(circular doubly list)

12

Кольцевой (циклический)

односвязный список

13

Ортогональные (многосвязные ) списки

- нелинейные структуры

Основные операции над списками

вцелом над списком

создание списка – уничтожение списка

печать списка

сохранение восстановление списка ( файл)

сортировка списка

копирование списка

объединение списков (сортированных и не) над элементами списка

включение – удаление элемента

поиск и обработка элемента

15

Элемент списка в C программе

// двусвязный список struct LIST // ITEM, NODE

{ int x; // все типы данных data + key LIST *next,*prev;

};

typedef struct tagLIST // ITEM, NODE { int x; // все типы данных data + key

LIST *next,*prev; } LIST, *pLIST;

int main ()

{LIST *head, *last;

……………………………………..

}

16

Создание “случайного”списка

LIST *CreateRandList(LIST *&head, LIST *&last, int n, int m) { int i; LIST *p,*q;

for(i=0; i<n; i++)

{ p=(LIST *)malloc(sizeof(LIST)); if(i==0) { head=p; head->prev=0;}

p->x=rand()%m; // случайные числа 0..m-1

if(i!=0) { q->next=p;

p->prev=q; }

q=p;

 

}

 

p->next=0;

 

last=p;

 

return head;

 

} // CreateRandList

17

Search Item in List

int SearchList(LIST *head, LIST *&out, int a) { int i, k=-1; LIST *p = head;

out=0; for(i=0; p; i++)

{ if(a==p->x)

{k=i; out=p; break; } p=p->next;

}

return k;

}

18

Insert item to list

p->prev p

s

19

Insert Item to sorted list: before & after

LIST* InsertSortedList(LIST *&head, LIST *&end, LIST *s) { LIST *p=head,*q;

while(p && s->z<p->x)

{ q=p; p=p->next; } // q=p->prev

if(!head) { s->prev=0; s->next=0; head=s; end=s;} else if(p==head) { s->prev=0; s->next=p; head=s; } else if(p==0) { s->prev=q; s->next=0; end=s; } else

{ s->prev=q; s->next=p; } return p;

}

20

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