русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Зв’язний список


Дата додавання: 2014-04-22; переглядів: 1312.


Виконуючи лабораторне заняття 4-5, ми вже познайомилися з таким способом зберігання даних, як список (однозв’язний). Реалізуємо зв’язний список засобами С++.

Створимо зв’язний список, що є об’єктом класу linklist. Елементи списку представлені структурою link. Кожен елемент містить ціле число, що являє собою дані, та вказівник на наступний елемент списку. Вказівник на сам список зберігається на початку списку.

Такий список реалізується в програмі 12.19.

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<bios.h>

struct link

{int data;

link* next;

};

 

class linklist //список

{private:

link* first;

public:

linclist()

 

{first=NULL;}

void additem(int d);

void display();

};

////////////////////

void linklist::additem(int d)

{link* newlink=new link;

newlink->data=d;

newlink->next=first;

first=newlink;

}

void linklist::display()

{link* current=first;

while(current)

{cout<<current->data<<endl;

current=current->next;

}

}

 

////////////////

int main()

{clrscr();

linklist l1;

l1.additem(25);

l1.additem(35);

l1.additem(45);

l1.display();

bioskey(0);

return 0;

}

Програма 12.19

Клас linklist містить тільки одне поле: вказівник на початок списку. При створенні списку конструктор ініціалізує цей вказівник, іменований як first, значенням NULL, яке аналогічне значенню 0. Це значення є ознакою того, що вказівник вказує на адресу, яка гарантовано не містить корисної інформації. В нашій програмі елемент, вказівник якого на наступний елемент має значення NULL, є кінцевим елементом списку.

 

Класи, що містять самі себе

Розглянемо можливі помилки при використанні класів та структур, що посилаються самі на себе. Структура link в прикладі 12.19 містить вказівник сама на себе. Те саме можна проробити і з класами:

class sampleclass

{ sampleclass* ptr;

};

Однак, хоча клас може містити вказівник на самого себе, сам цей об’єкт він містити не може. Запис

class sampleclass

{ sampleclass obj;

};

буде помилковим. Це саме стосується також структур.

 

 


<== попередня лекція | наступна лекція ==>
Масив вказівників на об’єкти | Вказівники на вказівники


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн