Содержание
- 2. Элемент динамической структуры Р – указатель; D – данные.
- 3. Типы структур: списки деревья графы односвязный двунаправленный (двусвязный) циклические списки (кольца)
- 4. Объявление динамических структур struct имя_типа { информационное поле; адресное поле; };
- 5. struct TNode { //информационное поле int Data; //адресное поле TNode *Next; };
- 7. Доступ к данным в динамических структурах
- 8. УказательНаСтруктуру->ИмяЭлемента Например: p->Data; p->Next;
- 9. struct Node { char Name[20]; int Value; Node *Next; };
- 10. int _tmain() { //объявляется указатель Node *PNode; //выделяется память PNode = new Node; //присваиваются значения strcpy(PNode->Name
- 11. Memo1->Clear(); Node *PNode; PNode = new Node; AnsiString St="STO"; strcpy(PNode->Name ,St.c_str()); PNode->Value = 28; PNode->Next =
- 12. struct Node { String Name; int Value; Node *Next; };
- 13. Node *PNode; PNode = new Node; PNode->Name= "STO"; PNode->Value = 28; PNode->Next = NULL; Memo1->Lines->Add("name="+(PNode->Name)+ "
- 14. Списки Однонаправленный (односвязный) список
- 15. struct имя_типа { информационное поле; адресное поле; }; struct Node { int key; Node *pnext; };
- 16. struct List {//структура данных int Data; //информационное поле List *Next; //адресное поле };
- 17. Создание однонаправленного списка int n; cout cin>>n; //указатель на текущий элемент списка List *head, *first;//указатель на
- 18. //заполняем первый элемент cout cin >>head->Data; //заполняем остальные элементы списка for(int i=1;i { head->Next= new List;
- 19. просмотр однонаправленного списка cout head=first; //пока не встретится признак //конца списка NULL while(head != NULL) {
- 20. В визуальной среде
- 21. TForm1 *Form1; struct List {//структура данных int Data; //информационное поле List *Next; //адресное поле }; List
- 22. Обработчик события нажатие на кнопку «Заполнить первый элемент» head=new List; //сохранили адрес первого элемента, //чтобы потом
- 23. Обработчик события нажатие на кнопку «Заполнить следующий элемент» head->Next= new List; head=head->Next; head->Data=StrToInt(Edit1->Text);
- 24. Обработчик события нажатие на кнопку «Конец списка» //определяем конец списка для //последнего элемента head->Next=NULL;
- 25. Обработчик события нажатие на кнопку «Просмотр списка» Memo1->Clear(); head=first; //пока не встретится признак конца списка NULL
- 27. void PrintM(List *head) { //head=first; //пока не встретится признак конца списка NULL while(head != NULL) {
- 28. Вставка элемента в однонаправленный список
- 29. /*функция добавления элемента с заданным номером в однонаправленный список*/ List* InsertM(List* Head, int Number, //номер добавляемого
- 30. else { //список не пуст List *Current=Head; for(int i=1; i Next!=NULL; i++) Current=Current->Next; if (Number ==
- 31. Обработчик события кнопки «Добавить элемент» int Numb, DataIt; Numb=StrToInt(Edit3->Text); DataIt=StrToInt(Edit1->Text); //добавляем элемент, в качестве аргумента функции
- 32. Удаление элемента из однонаправленного списка
- 33. /*удаление элемента с заданным номером из однонаправленного списка*/ List* DeleteM(List* Head, int Number){ List *ptr;//вспомогательный указатель
- 34. else {//удаляем не первый элемент ptr = Head; while (ptr->Next != Current) ptr = ptr->Next; ptr->Next
- 35. Обработчик события нажатие на кнопку «Удалить элемент» int Numb; Numb=StrToInt(Edit3->Text); head=DeleteM(head,Numb); Memo1->Clear(); PrintM(head);
- 36. /*функция поиска элемента с заданным значением в однонаправленном списке результат работы функции: true − искомый элемент
- 37. //функция удаления однонаправленного списка void Delete_ListM(List* Head){ if (Head != NULL){ Delete_ListM(Head->Next); delete Head; } }
- 38. Пример класса для работы с односвязным списком struct element { //значения из x //будут передаваться в
- 39. class List //Класс Список { element **Head, *First; public: List() { Head=new element; First=Head; Head->x=1;} //Конструктор
- 40. List::~List() //Деструктор определен вне класса { //Пока по адресу не пусто while (Head!=NULL) { //Временная переменная
- 41. //Функция добавления элементов в список //после х указываются все заполняемые поля //структуры void List::Add(int x) {
- 42. //Функция отображения списка на экране void List::Show() { //Определяем указатель, который изначально //равен адресу начала списка
- 43. //использование класса List ob;//Переменная, тип которой список объявляем //глобально . . . . Обработчик события нажатие
- 45. Скачать презентацию