Создание списковых структур данных


Цель работы: Написать программу формирования и печати двусвязного списка Ваших друзей с указанием их телефонов и адресов. Признаком окончания списка является нулевое значение номера телефона. Распечатать список в обратном порядке (печать с конца списка до его начала).

Блок-схема

Листинг программы:

#include <stdio. h>

#include <stdlib. h>

#include <conio. h>

#include <string. h>

#include <iostream>

#include <windows. h>

Using namespace std;

/* Определение структурного типа "звено двусвязного списка"*/

Struct tn{

Char name [20];

Char address[30];

Int telephone;

Struct tn *pc1; /* указатель на предшествующее звено */

Struct tn *pc2; /* указатель на следующее звено */

};

Int main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

Int i;

/* Указатель для перебора звеньев списка: */

Struct tn *rex;

Struct tn *beg=NULL; /* Начало списка */

Struct tn *end=NULL; /* Конец списка */

Cout " "Введите данные о друзьях через Enter.""endl;

Cout " "Список не формируется, если телефон = 0.""endl;

Cout " "Для указания адреса вместо пробела используйте _ .""endl;

Cout " "Чтобы закончить формирование списка, укажите телефон 0.""endl;

Printf(" Введите данные: ");

/* Цикл ввода и формирования списка */

Do

{

/* Выделить память для очередного звена списка: */

Rex=(tn*)malloc(sizeof(tn));

/* Ввести значения элементов звена: */

Printf("Имя: ");

Scanf("%s",&;rex->name);

Printf("Адрес: ");

Scanf("%s",&;rex->address);

Printf("Телефон: ");

Scanf("%d",&;rex->telephone);

If(rex->telephone==0)

{

Free(rex);

Break; /* Выход из цикла ввода списка */

}

If(beg==NULL &;&; end==NULL)

/* Список пуст - включить введенный элемент в список первым*/

{

Beg=rex;

Beg->pc1=NULL; /* указатель на предшествующее звено для первого элемента списка равен NULL */

}

Else /* Включить звено в уже существующий список */

{

End->pc2=rex; /*Бывший последний ссылается на включенное звено */

Rex->pc1=end; /*Включенное звено ссылается на предшествующий элемент */

}

End=rex; /*Включенное звено стало последним*/

End->pc2=NULL;

}while(1); Конец ввода списка */

/* Напечатать список */

Printf(" Введенные данные:");

Cout"endl;

Rex=end;

While(rex!=NULL)

{

Cout""Имя: ""rex->name"" Адрес: ""rex->address""Телефон:""rex->telephone"endl;

Rex=rex->pc2;

}

Rex=beg;

Cout""Имя: ""rex->name"" Адрес: ""rex->address"" Телефон: ""rex->telephone"endl;

Cin"i;

Return 0;

}

Пример выполнения программы:

Вывод: было предложено. Написать программу формирования и печати двусвязного списка Ваших друзей с указанием их телефонов и адресов. Признаком окончания списка является нулевое значение номера телефона. Распечатать список в обратном порядке (печать с конца списка до его начала). программа листинг двусвязный

Данную задачу выполнили, реализовав программу на языке С/С++, также предоставили алгоритм решения задачи в виде блок-схемы и листинг самой программы. Данная работа помогла приобрести навыки, связанные с использованием односвязных списков в программировании на ЯВУ.

Похожие статьи




Создание списковых структур данных

Предыдущая | Следующая