MaxEdu.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!

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

Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.

Сотрудничая с нами, вы будете не клиентом, а нашим партнером. Благодаря этому мы будем развивать ваш бизнес как собственный. Мы так же как и вы заинтересованы в успехе проекта, поскольку ваша успешность будет нашей рекламой.

© 2014 - 2022 MaxEdu.ru