ReferatWorld.ru
» » » Разработка линейного однонаправленного списка
Вернуться назад

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

Разработать программу реализующая следующие элементы списка:
Вставка, удаление, вывод на экран, чтение из файла, удаление последнего элемента и удаление всех элементов списка, осуществляет выход из программы.
Структурное и функциональное описание программы:
//-------------------------------Подключение библиотек--------------------------
#include // Стандартные потоки ввода-вывода:
// ios,istream,ostream,iostream
#include
#include
#include
#include
#include // Файловые потоки ввода-вывода:
//------------------------Русификатор------------------------------------------------
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; inext;
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;inext;
for(i=0;inext;
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();
}
Схема
Вывод: эта программа выполняет ввод данных с клавиатуры, сохранение в файл и чтение из него; удаление элементов или всего списка, осуществляет просмотр и выход из программы, то есть она выделяет динамическую память для ввода данных с клавиатуры, сохраняет данные в файл. Можно загрузить данные из файла. Редактирует список с помощью удаления элемента списка, а так же возможно удалить список полностью и начать заполнение списка заново.

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать полную версию
Рефераты по информатике Разработать программу реализующая следующие элементы списка: Вставка, удаление, вывод на экран, чтение из файла, удаление последнего элемента и
Оценок: 275 (Средняя 5 из 5)

Одними из наиболее популярных услуг на рынке IT-технологий являются создание и продвижение лендингов. Они способны положительно влиять на деятельность любого бизнес-проекта в интернете. Судя по многочисленным отзывам, заказавшие создание лендингов люди ни разу не пожалели о потраченных деньгах. Они вложили в будущее, которое неразрывно связано с интернетом. Всё больше и больше предпринимателей обращаются к услугам разных агентств, веб-студий, чтобы заказать создание лендинга у профессионалов.

© 2017 - 2022 ReferatWorld.ru