Реферат

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

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.12.2024





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

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

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

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

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

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


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


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

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

 группы ВТК-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();

}
 
Схема

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

1. Реферат на тему The Chronicles Of Narnia Essay Research Paper
2. Методичка на тему Основні засади розвитку вищої освіти України в контексті Болонського процесу
3. Реферат на тему Перенесение перста св Иоанна Крестителя из Византии на Русь в контексте византийской политики Владимира
4. Реферат Тиристорные устройства для питания автоматических телефонных станций
5. Реферат на тему НЕФРОТИЧЕСКИЙ СИНДРОМ
6. Курсовая Законодательная и нормативная регламентация документирования кадровой деятельности
7. Реферат Государственное регулирование экономического роста
8. Диплом на тему Организация работы по подготовке школьного актива органами ВЛКСМ в 60-80-хх годах ХХ века
9. Реферат Політичні партії сутність функції типологія
10. Реферат Право собственности 10