Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
печатай!!11!1.doc
Скачиваний:
6
Добавлен:
23.11.2019
Размер:
97.79 Кб
Скачать

Ifstream in("input.Txt");

ofstream out("output.txt");

in>>x; in>>y;

//переписываем все числа из файла в первую очередь

while (in.peek()!=EOF)

{

in>>i;

t.put(i);

}

In.Close();

//пока первая очередь не пуста, извлекаем из нее элементы

//если очередной элемент равен x, то во вторую очередь записываем у

//иначе во вторую очередь записываем извлеченный элемент

while (!t.empty())

{ i=t.get();

if (i==x) t1.put(y);

else t1.put(i);

}

while (!t1.empty())

out<<t1.get()<<" ";

out.close();

return 0;

}

_____________________________input.txt_________________________________

7 0

7 7 1 3 7 5 2 5 7 2 7 9 3 7 7

_____________________________output.txt________________________________

0 0 1 3 0 5 2 5 0 2 0 9 3 0 0

Реализация односвязного списка общего вида

#include "exception"

#include "iostream"

#include "fstream"

#include "string"

using namespace std;

class listException: public exception

{

public:

listException(const string & message="")

: exception(message.c_str())

{}

};

template <class Item>

class List

{

struct elem

{Item inf;

elem *next;

elem (Item x):inf(x),next(0)

{}

};

elem *head; //указатель на начало

intsize; //размер списка – количество элементов

elem *find(intindex)

//возвращает указатель на элемент с номером index

{

if ((index<1)||(index>size))

return NULL;

else

{

elem *cur=head;

for (int i=1;i<index;i++)

cur=cur->next;

return cur;

}

}

public:

//конструкторкласса

List():head(0),size(0){}

//деструктор класса

~List()

{while (!empty())

remove(1);

}

//проверка пустоты списка

boolempty()

{returnhead==0;}

//возвращает размер списка, т.е. количество элементов

intgetLength()

{returnsize;}

//возвращает значение элемента по его номеру

Item get(int index)

{

if ((index<1)||(index>size))

throw listException("StackException: get — list error");

else

{

elem *r=find(index);

Item i=r->inf;

return i;

}

}

//осуществляет вставку элемента со значением data в позицию index

void insert(int index, Item data)

{

int newLength=getLength()+1;

if ((index<1)||(index>size+1))

throw listException("StackException: insert — list error");

else

{

elem *newPtr=new elem(data);

size=newLength;

if (index==1)

{newPtr->next=head;

head=newPtr;

}

else

{

elem *prev=find(index-1);

newPtr->next=prev->next;

prev->next=newPtr;

}

}

}

//осуществляет удаление элемента в позиции index

void remove(int index)

{

elem *cur;

if ((index<1)||(index>size))

throw listException("StackException: remove — list error");

else

{--size;

if (index==1)

{cur=head;

head=head->next;

}

else

{

elem *prev=find(index-1);

cur=prev->next;

prev->next=cur->next;

}

cur->next=NULL;

delete cur;

}

}

};

Решение задач с помощью односвязных списков общего вида

1. В файле input.txtзаписана последовательность целых чисел. Создать на основе нее список, заменить в нем каждый элемент xна у. Полученный список переписать в файл output.txt

#include "exception"

#include "iostream"

#include "fstream"

#include "string"

using namespace std;

class listException: public exception

{…………………………………

};

template <class Item>

class List

{…………………………….};