Реферат

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 25.11.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 Issue Of Authority And Respect Essay
2. Контрольная работа Исследование памяти школьников
3. Курсовая на тему Железоуглеродистые сплавы Медь и ее сплавы
4. Реферат Теория яйца
5. Сочинение на тему Бедные люди Достоевского дебют писателя
6. Реферат на тему Домоводство ВНКаразіна - українська паралель європейських економічних теорій
7. Кодекс и Законы Экзаменационные вопросы по естествознанию физика
8. Биография на тему Шокли Уильям
9. Реферат на тему Interpersonal Communication Essay Research Paper Interpersonal communication
10. Реферат на тему Pride And Prejudice Essay Research Paper True