Разработка линейного однонаправленного списка
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
КУЙБЫШЕВСКИЙ ФИЛИАЛ
Курсовой проект
По дисциплине: Программирование
На тему: « Разработка линейного однонаправленного списка»
Выполнил студент
группы ВТК-281
Киселёв С.А.
.
_______________
(подпись, дата)
Проверил:
Бычков М.И.
Куйбышев 2010
Задание:
Разработать программу реализующая следующие элементы списка:
Вставка, удаление, вывод на экран, чтение из файла, удаление последнего элемента и удаление всех элементов списка, осуществляет выход из программы.
Структурное и функциональное описание программы:
//-------------------------------Подключение библиотек--------------------------
#include <iostream> // Стандартные потоки ввода-вывода:
// ios,istream,ostream,iostream
#include
#include
#include
#include
#include <fstream> // Файловые потоки ввода-вывода:
//------------------------Русификатор------------------------------------------------
void rus(char *str)
{
char buf[100];
CharToOem(str,buf);
cout< 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=p->next; } rus("СОХРАНЕНО!!!"); cout<<"\n"; } //-------------------------Print------------------------------------------------ void show(node *z){while(z){cout< //--------------------------Запись в структуру------------------------ 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 p = p->next; return p->x; } else return 0; // иначе возвращается 0 } void exchange(const int &dpos, const int &spos) { if((dpos { int i; char* temp; temp = new char[15]; node *dest = uk; node *source = uk; for(i=0;i for(i=0;i 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(); } Схема main загрузка сохранение Удаление всего списка Удаление одного элемента Вывод на экран вставка Выход меню Вывод: эта программа выполняет ввод данных с клавиатуры, сохранение в файл и чтение из него; удаление элементов или всего списка, осуществляет просмотр и выход из программы, то есть она выделяет динамическую память для ввода данных с клавиатуры, сохраняет данные в файл. Можно загрузить данные из файла. Редактирует список с помощью удаления элемента списка, а так же возможно удалить список полностью и начать заполнение списка заново.

Нравится материал? Поддержи автора!
Ещё документы из категории информатика:
Чтобы скачать документ, порекомендуйте, пожалуйста, его своим друзьям в любой соц. сети.
После чего кнопка «СКАЧАТЬ» станет доступной!
Кнопочки находятся чуть ниже. Спасибо!
Кнопки:
Скачать документ