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
{…………………………….};