Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Отчет по операционным системам

Автор:   •  Апрель 14, 2022  •  Лабораторная работа  •  1,731 Слов (7 Страниц)  •  141 Просмотры

Страница 1 из 7

           

Вариант 13  

[pic 1]  

  

  

В исходный файл я поместил буквы и цифры вперемешку. Соответственно, в одном списке будут цифры, в другом – буквы.  

  

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

  

  

Код программы (на C++):  

  

#include <locale.h>  

#include <iostream>  

#include <stdio.h> #include <fstream> using namespace std;  

  struct SList {//структура данных     

char Data; //информационное поле     SList* Next; //адресное поле  

    SList* Prev; //адресное поле  

};  

  

//рекурентрный вывод списка void printSList(SList* Head) {     if (Head != NULL) {         printf("%c ", Head->Data);         printSList(Head->Next);  

    }  

    else cout << "\n";  

}   

//вставка в список  

SList* insertItemSList(SList* Head, int Number, int DataItem) {      Number--;  

    SList* NewItem = new(SList);  

    NewItem->Data = DataItem;     NewItem-

>Next = NULL;      if (Head == NULL) {//список пуст  

        Head = NewItem;//создаем первый элемент списка  

    }     else {//список не пуст         SList* Current = Head;          for (int i = 1; i < Number && Current->Next != NULL; i++)  

            Current = Current->Next;         if (Number == 0) {  

            //вставляем новый элемент на первое место  

            NewItem->Next = Head;  

            Head = NewItem;  

        }  

        else {//вставляем новый элемент на непервое место             

if (Current->Next != NULL)                 NewItem->Next

= Current->Next;  

            Current->Next = NewItem;  

        }     }     return Head;  

}   

//удаление из списка  

SList* deleteItemSList(SList* Head, int Number) {  

    SList* p;//вспомогательный указатель     SList* Current = Head;      for (int i = 1; i < Number && Current != NULL; i++)         Current = Current->Next;      if (Current != NULL) {//проверка на корректность         

if (Current == Head) {//удаляем первый элемент              Head = Head->Next;             delete(Current);  

            Current = Head;  

        }          else {//удаляем непервый элемент             

p = Head;             while (p->Next != Current)                 p = p->Next;             p->Next = Current->Next;            

delete(Current);  

            Current = p;          }     }     return Head;  

}  

  

//удаление списка void deleteSList(SList* Head) {     if (Head != NULL) {         deleteSList(Head->Next);         delete Head;  

...

Скачать:   txt (6.9 Kb)   pdf (226.5 Kb)   docx (139.2 Kb)  
Продолжить читать еще 6 страниц(ы) »
Доступно только на Essays.club