Реферат

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

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

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

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

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

от 25%

Подписываем

договор

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

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





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

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

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

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

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

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


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


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

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

 группы ВТК-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. Реферат Методи оцінки та відбору працівників фірми
2. Задача Статистические методы изучения предприятий
3. Реферат на тему Anaximander Essay Research Paper Anaximander was a
4. Реферат Слово и человек в жизни
5. Реферат Православие как основа современной педагогики
6. Реферат на тему Visual Impairment Essay Research Paper Vision Impairments
7. Реферат на тему Proletarians And Communists Essay Research Paper Proletarians
8. Реферат на тему James A Michner
9. Реферат на тему Corporal Punishment Essay Research Paper The term
10. Реферат Филиппинский какаду