Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб.раб по С.doc
Скачиваний:
16
Добавлен:
04.11.2018
Размер:
308 Кб
Скачать
☆
  1. Двунаправленные связные списки

Каждый узел двунаправленного списка имеет два указателя: один на предыдущий узел, другой на последующий. Это делает двунаправленный список более удобным при работе с ним.

Указатель

На заголовок

Список создается динамически и размер его может постоянно меняться. Это удобно использовать в программах обрабатывающих постоянно меняющиеся в размере массивы данных. Например: библиотечный фонд, отдел кадров и т.д.

// Пример программы работы с односвязным списком

#include <stdio.h>

#include <conio.h>

struct TelNum;

int printAllData(TelNum * start);

int inputData(TelNum * n);

struct TelNum

{

TelNum * next;

long number;

char name[30];

};

// Описание: печать списка

int printAllData(TelNum * start){

int c=0;

for(TelNum * next=start;next; next= next->next)

printf("#%3.3i %7li %s\n",++c,next->number,next->name);

return 0;

}

// Описание: ввод данных в структуру n конец ввода - ввод нуля

// в первое поле. Возвращает 1 если конец ввода

int inputData(TelNum * n){

printf("Номер?"); scanf("%7li",&n->number);

if(!n->number) return 1;

printf("Имя? "); scanf("%30s",&n->name);

return 0;

}

void main(void){

TelNum * start = NULL; //сторож

TelNum * end = start;

do{ //блок добавления записей

TelNum * temp = new TelNum;

if(inputData(temp))

{delete temp;

break;

}

else { if(start==NULL) { //создание первого узла списка

start = temp;

end = temp;

start->next = NULL;

}

else { //создание всех последующих узлов

end->next=temp;

end=temp;

end->next=NULL;

}

}

}while(1);

printf("\nЗаписи после добавления новых:\n");

printAllData(start);

getch();

do{ //блок удаления записей

TelNum * deleted = start;

start = start->next;

delete deleted;

printAllData(start);

getch();

}while(start!=NULL);

}

Список рекомендуемой литературы

1. М. Уэйт, С. Прайт, Д. Мартин. Язык СИ. - М.: "Мир", 1988 г.

2. Кеpниган Б., Ритчи Д. Язык пpогpаммиpования Си. - М.: Финансы и статистика, 1992г.

3. Кузнецов С.Д. Турбо Си. - М.: Малип, 1992г.

4. П. Киммел Borland C++ 5.0. – C-П.: «BHV-Cанкт Питербург», 1997 год.

5. Цимбал А.А.,Майоров А.Г., Козодаев М.А. Turbo C++: язык и его применение. – М.: «Джен Ай Лтд», 1993 г.

Содержание

Лабораторная работа 1 1

2 СОДЕРЖАНИЕ ОТЧЕТА 2

Лабораторная работа 2 3

2 СОДЕРЖАНИЕ ОТЧЕТА 4

ЛАБОРАТОРНАЯ РАБОТА 3 6

ЛАБОРАТОРНАЯ РАБОТА 4 8

ЛАБОРАТОРНАЯ РАБОТА 5 10

ЛАБОРАТОРНАЯ РАБОТА 6 13

ЛАБОРАТОРНАЯ РАБОТА 7 16

ЛАБОРАТОРНАЯ РАБОТА 8 20

ЛАБОРАТОРНАЯ РАБОТА 9 23

Лабораторная работа 10 26

1. индивидуальные задания 26

ПРИЛОЖЕНИЕ 26

СПИСОК рекомендуемой ЛИТЕРАТУРЫ 28

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