Реферат по предмету "Информатика"


Разработка линейного однонаправленного списка

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

КУЙБЫШЕВСКИЙ ФИЛИАЛ



Курсовой проект

По дисциплине: Программирование

На тему: « Разработка линейного однонаправленного списка»


Выполнил студент

группы ВТК-281

Киселёв С.А.

.

_______________

(подпись, дата)


Проверил:

Бычков М.И.


Куйбышев 2010

Задание:

Разработать программу реализующая следующие элементы списка:

Вставка, удаление, вывод на экран, чтение из файла, удаление последнего элемента и удаление всех элементов списка, осуществляет выход из программы.


Структурное и функциональное описание программы:


//-------------------------------Подключение библиотек--------------------------

#include <iostream> // Стандартные потоки ввода-вывода:

// ios,istream,ostream,iostream

#include <conio>

#include <windows>

#include <stdio>

#include <stdlib>

#include <fstream> // Файловые потоки ввода-вывода:


//------------------------Русификатор------------------------------------------------

void rus(char *str)

{

char buf[100];

CharToOem(str,buf);

cout<<buf;

return;

}


//------------------------Вывод на экран меню и запись значения--------------


int menu()

{int n;

rus(" Меню ");cout<<"\n";

rus(" ");cout<<"\n";

rus(" 1 - Вставка ");cout<<"\n";

rus(" 2 - Удаление ");cout<<"\n";

rus(" 3 - Вывод на экран ");cout<<"\n";

rus(" 4 - Сохранение ");cout<<"\n";

rus(" 5 - Чтение");cout<<"\n";

rus(" 6 - Удаление всего списка");cout<<"\n";

rus(" 0 - Выход ");cout<<"\n";

rus("==============================");cout<<"\n";

rus(" Введите пункт меню ");cout<<"\n";

cin>>n; return n;} // ввод с клавиатуры


//-----------------------------------------------------------------------------------


struct node{char x[15]; node *next;};

node *un=NULL; //создаём указатели на начало списка

node *uk=un; //создаём указатель на конец списка

node *r,*pre; //ещё 2 указателя

int count;


//--------------------------------Удаление всего списка-------------------------


void dellist(node *p) // функция удаления


{

while(p){delete p; p=p->next;

}

uk=un;

}


//----------------------------------Удаление------------------------------------

void delet(node*p)

{

node *h=p;

if(p==uk)

{

uk=p->next;delete h;

}

else

{

node *f=p->next;

p->next=(p->next)->next;

delete f;

}

}


//-----------------------------------Сохранение---------------------------------


void save(node *p)

{

ofstream out("a.txt");

while(p)

{ out<<p->x<<"\n";

p=p->next;

}

rus("СОХРАНЕНО!!!"); cout<<"\n";

}


//-------------------------Print------------------------------------------------


void show(node *z){while(z){cout<<z->x<<"_____"<<z<<"\n";z=z->next;}}


//--------------------------Запись в структуру------------------------


node* insert(node *p)

{

node *q=new node;

rus("Введите значение \n");

textcolor(RED);

rus ("!!!не более 15 символов!!!\n\n");

gotoxy(1.5,wherey());

cin>>q->x; q->next=p;

return q;

}


//--------------------------Запись в структуру----------------------------------


node* insert(node *p, char* str)

{

node *q=new node;

strcpy(q->x, str); //функция копирования

q->next=p;

return q; // функция возвращения переменной

}

int GetCountEl(node *p)

{

int n = 0;

while(p) //цикл с предусловием

{

n++;

p=p->next;

}

return n;

}


char* getEl(const int &num)

{

if(num < count) // структура (вид – ветвление)

{

node *p = uk;

for(int i=0; i<num; i++)

p = p->next;

return p->x;

}

else return 0; // иначе возвращается 0

}

void exchange(const int &dpos, const int &spos)

{

if((dpos<count)&&(spos<count))

{

int i;

char* temp;

temp = new char[15];

node *dest = uk;

node *source = uk;

for(i=0;i<dpos;i++) dest = dest->next;

for(i=0;i<spos;i++) source = source->next;

strcpy(temp, source->x);

strcpy(source->x, dest->x);

strcpy(dest->x, temp);

}

}

//--------------Загрузка--------------------------

loading()

{

char *str;

str = new char[15];


ifstream inf("a.txt");

if (!inf)

{

rus("Ошибка при открытии файла!\n\n\n");

} else

{

while (!inf.eof())

{

inf.getline(str,15); //введенная из файла строка

if (strcmp("",str)) uk = insert(uk, str);

}

rus("Данные успешно загружены!\n\n\n");

}

}


//-------------------------Главная функция-----------------------------------

int main()

{ int n=1;

while(n){char x[15];

n=menu();

switch(n) // оператор выбора

{

case 1:clrscr();

cin>>x; uk=insert(uk,x);break;

case 2:clrscr();delet(uk);break;

case 3:clrscr();show(uk);break;

case 4:clrscr();save(uk);break;

case 5:clrscr();loading();break;

case 6:clrscr();dellist(uk);break;

case 0:clrscr();exit(0);

}

}

getch();

}


Схема



Вывод: эта программа выполняет ввод данных с клавиатуры, сохранение в файл и чтение из него; удаление элементов или всего списка, осуществляет просмотр и выход из программы, то есть она выделяет динамическую память для ввода данных с клавиатуры, сохраняет данные в файл. Можно загрузить данные из файла. Редактирует список с помощью удаления элемента списка, а так же возможно удалить список полностью и начать заполнение списка заново.



Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат 10-я Юбилейная международная научно-техническая конференция "Современные проблемы радиоэлектроники, телекоммуникаций и компьютерной инженерии", посвященная 165-й годовщине
Реферат Мероприятия паблик рилейшнз
Реферат Определение рейтинга инвестиционного потенциала
Реферат Что влияет на эффективность рекламы
Реферат Международный кодекс рекламы
Реферат The Tempest Essay Research Paper THE TEMPESTIn
Реферат Анализ стихотворения САЕсенина Отговорила роща золотая
Реферат Рекламные сувениры. Новый подход.
Реферат Расчет, выбор и обоснование посадок соединений редуктора
Реферат Naming или «Наши на Западе»
Реферат Об организации продаж…
Реферат Основи ринкових відносин Концепція фірма з позиції праця вартість ціна капітал монополія олігополія
Реферат Создание генератора сказок средствами Delphi
Реферат Продвижение товара (услуг)
Реферат Научная реклама