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

Написание программы формирования и печати двусвязного списка друзей с указанием их телефонов и адресов. Блок-схема и листинг. Определение структурного типа: "звено двусвязного списка". Выделение памяти для очередного звена. Нулевое значение номера.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.