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

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

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


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


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


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


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


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


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

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


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




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


группы ВТК-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&q

uot;);


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 символов!!!nn");


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("Ошибка при открытии файла!nnn");


} else


{


while (!inf.eof())


{


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


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


}


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


}


}


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


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();


}


Схема



Вывод:

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

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:682
Символов:8518
Размер:16.64 Кб.