русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

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

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Доступ к динамическим объектам.


Дата добавления: 2015-09-15; просмотров: 676; Нарушение авторских прав


Операция выбора элемента через указатель(->) используется для доступа к элементам динамических составных объектов. Составные объекты – это переменные производных типов, сконструированных из других типов, таких как классы или структуры. Термин динамический обозначает, что они размещены в куче с помощью операции new; элемент – это некая переменная, входящая в состав такой комплексной переменной.

Пусть мы имеем следующую структуру:

struct INTS

{int x1, x2;};

X1 и X2 – это элементы.

Если переменная этого типа определена как переменная- указатель

struct INTS *ints=new INTS;

то обращениеё к любому её элементу должно происходить с добавлением к имени переменной операции выбора элемента через указатель (->) т. е.

ints->x1=1;

ints->x2=2;

Динамические данные и структуры используются для создания эффективных структур данных – связанных списков. Связанный список – это последовательность элементов (узлов), связанных указателями. Одним из примеров является линейный связанный список. Каждый узел такого списка содержит два поля: поле данных и указатель на следующий элемент списка.

struct inlist

{ int number;

intlist *next;

}

 

number
next
number
number
next
· · ·…

 

 

Пример создания связанного списка, поиска значения, вставки нового элемента в список. (файл spoi_f2.cpp)

/*программа создаёт связанный список из целых

чисел, ищет заданное значение и вставляет

новый элемент в список*/

#include<iostream.h>

struct intlist

{int number;

intlist *next;

};

int getnumber()//функция ввода элементов списка

{int number;

cout<<"введите число\n";

cin>>number;

return(number);

}

 

intlist *create() //функция создания связанного списка



{

intlist *first;

int number;

intlist *listPtr;

intlist *lastPtr=0; //указатель на последний созданный элемент

first=0;

int i=0;

while (i<5)

{

i++;

number=getnumber();

listPtr=new intlist;

listPtr->number=number;

listPtr->next=0;

if (lastPtr) // если не первый элемент списка (lastPtr>0)

lastPtr->next=listPtr;

else

first=listPtr; // если первый элемент списка

lastPtr=listPtr;

}// закрыть while

return(first); // возвращает указатель на начало списка

}// конец функции

 

void printt(intlist *first) //функция печати списка

{

intlist *listPtr;

cout<<"список"<<endl;

listPtr=first;

do

{cout<<listPtr->number<<" ";

listPtr=listPtr->next;

}

while(listPtr);

return;

}

 

intlist *poisk(intlist *first) //функция поиска

{

intlist *listPtr1,*listPtr2,*listPtr;

int d;

cout<<"введите число для поиска";

cin>>d;

listPtr=first;

do

{if (listPtr->number==d)

listPtr1=listPtr;

//cout<<listPtr1->number<<" ";

listPtr=listPtr->next;

}

while(listPtr); // пока не конец списка

return(listPtr1); // возвращает указатель на число, которое искали

}//конец функции поиска

 

intlist *insert(intlist *listPtr1)//функция вставки числа

{

intlist *listPtr2;

int r;

cout<<"какое число вставить" ;

cin>>r;

listPtr2=new intlist;

listPtr2->number=r;

listPtr2->next=listPtr1->next; // то, на что ссылается прежний элемент

listPtr1->next=listPtr2;

return(listPtr1);

}

 

void main()

{

intlist *f,*y;//последний созданный элемент

y=create();// возвращает указатель на первый элемент списка

printt(y);

f=poisk(y); // возвращает указатель на найденный элемент

insert(f);

printt(y);

}



<== предыдущая лекция | следующая лекция ==>
Динамические данные: описание, создание, доступ. | Задание на динамические списки.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.