Создание списковых структур данных
Написание программы формирования и печати двусвязного списка друзей с указанием их телефонов и адресов. Блок-схема и листинг. Определение структурного типа: "звено двусвязного списка". Выделение памяти для очередного звена. Нулевое значение номера.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 04.10.2014 |
Размер файла | 141,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ФГБОУ ВПО
Уфимский государственный авиационный технический университет
кафедра АПрИС
Лабораторная работа
Создание списковых структур данных
Уфа 2012
Цель работы: Написать программу формирования и печати двусвязного списка Ваших друзей с указанием их телефонов и адресов. Признаком окончания списка является нулевое значение номера телефона. Распечатать список в обратном порядке (печать с конца списка до его начала).
Блок-схема
Листинг программы:
#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("\nВведите данные:\n");
/* Цикл ввода и формирования списка */
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("\nВведенные данные:");
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;
}
Пример выполнения программы:
Вывод: было предложено. Написать программу формирования и печати двусвязного списка Ваших друзей с указанием их телефонов и адресов. Признаком окончания списка является нулевое значение номера телефона. Распечатать список в обратном порядке (печать с конца списка до его начала). программа листинг двусвязный
Данную задачу выполнили, реализовав программу на языке С/С++, также предоставили алгоритм решения задачи в виде блок-схемы и листинг самой программы. Данная работа помогла приобрести навыки, связанные с использованием односвязных списков в программировании на ЯВУ.
Размещено на Allbest.ru
Подобные документы
Расположение элементов списка в памяти. Информация о полях структуры TMember. Логическая структура двусвязного кольцевого списка. Логические схемы наиболее важных операций со списками. Алгоритмы обработки основных структур. Руководство пользователя.
курсовая работа [2,3 M], добавлен 27.08.2012Написание программы, исходя из конкретных данных. Создание двунаправленного линейного списка. Main - главная программа, содержащая меню. Занесение данных в память списка. Результирующий файл. Значения всех числовых данных из диапазона целого типа данных.
курсовая работа [2,3 M], добавлен 22.12.2010Создание баз хозяйственных договоров, банков и членов временных трудовых коллективов в среде разработки Delphi. Логическая структура линейного двусвязного списка. Способ упорядочения и алгоритм сортировки списка. Руководство пользования программой.
курсовая работа [749,4 K], добавлен 14.02.2016Переменные типа integer, real, их функции. Общее понятие о массиве, файлы для Pascal. Информационный и информанизационный набор списка. Реализация и тестирование программы. Выбор базы данных, внесение имени, меню. Блок-схема алгоритма, листинг программы.
курсовая работа [306,0 K], добавлен 04.02.2013Простые структуры для работы с пользователями и студентами. Описание пользовательских функций приложения. Алгоритм добавления информации о студентах в начало двусвязного списка. Удаление и фильтрация информации. Функция void menu-user. Листинг кода.
курсовая работа [1,7 M], добавлен 16.12.2014Определение назначения и описание функций дискового кэша как промежуточного буфера с быстрым доступом к информации. Процесс кэширования внешних накопителей. Построение алгоритма, описание интерфейса и разработка программы для работы с двусвязным списком.
курсовая работа [2,1 M], добавлен 21.01.2014Средства создания динамических структур данных. Формат описания ссылочного типа. Структура памяти во время выполнения программы. Линейные списки, стек, очередь. Организация списков в динамической памяти. Пример создания списка в обратном порядке.
лабораторная работа [788,2 K], добавлен 14.06.2009Структура записей входного массива. Описание основных типов данных. Алгоритм программы: присвоение начальных значений переменных, чтение списка из файла, вывод данных на экран, выполнение обработки данных, сохранение списка в файл. Листинг программы.
курсовая работа [325,2 K], добавлен 28.12.2012Представление (построение, создание) списка данных в виде линейного однонаправленного списка. Формирование массива данных. Вывод данных на экран. Алгоритм удаления, перемещения данных. Сортировка методом вставки. Алгоритм загрузки данных из файла.
курсовая работа [2,1 M], добавлен 16.05.2015Создание стека как линейного списка. Использование аналогичного ссылочного типа для организации очереди. Циклически связанный список. Построение сложных структур в динамической памяти. Бинарные (двоичные) деревья. Экран результата и контрольные расчеты.
лабораторная работа [398,9 K], добавлен 14.06.2009