не получается сделать переопределение ++ как движение по списку. Помогите пожалуйста исправить проблему
struct Elem
{
int data;
Elem * next, *prev;
};
class List
{
Elem * Head, *Tail;
int Count;
public:
List()
{
Head = Tail = NULL;
Count = 0;
};
~List() { DelAll(); };
void Del(int pos)
{
if (pos == 0)
{
cout << "Input position: ";
cin >> pos;
}
if (pos < 1 || pos > Count)
{
cout << "Incorrect position !!!\n";
return;
}
int i = 1;
Elem * Del = Head;
while (i < pos)
{
Del = Del->next;
i++;
}
Elem * PrevDel = Del->prev;
Elem * AfterDel = Del->next;
if (PrevDel != 0 && Count != 1)
PrevDel->next = AfterDel;
if (AfterDel != 0 && Count != 1)
AfterDel->prev = PrevDel;
if (pos == 1)
Head = AfterDel;
if (pos == Count)
Tail = PrevDel;
delete Del;
Count--;
}
void DelAll( )
{
while (Count != 0)
Del(1);
};
void AddTail(int n)
{
Elem * temp = new Elem;
temp->next = 0;
temp->data = n;
temp->prev = Tail;
if (Tail != 0)
Tail->next = temp;
if (Count == 0)
Head = Tail = temp;
else
Tail = temp;
Count++;
};
Elem * temp = Head;
void Print()
{
cout << temp->data ;
temp++;
cout << temp->data;
};
List & operator ++ (int)
{
temp = temp->next;
}
};
int main()
{
List L;
L.AddTail(1);
L.AddTail(2);
L.AddTail(3);
L.AddTail(4);
L.Print();
L.DelAll();
system("pause");
}
List operator ++ ()
List & operator ++ (List &temp, int)
и в конец
return temp;
А может так
List & operator ++ (int)
{
temp = temp->next;
return *this;
}
https://ideone.com/LMoNo8
#include <iostream>
using namespace std;
struct List
{
List *next = 0;
};
List & operator ++ (List &x, int)
{
x = *x.next;
return x;
}
int main()
{
List *lst = new List();
lst->next = new List();
cout << lst << ' ' << lst->next << endl;
(*lst)++;
cout << lst << ' ' << lst->next << endl;
// Это упадёт
//(*lst)++;
//cout << lst << endl;
List lst2;
lst2.next = new List();
cout << &lst2 << ' ' << lst2.next << endl;
lst2++;
cout << &lst2 << ' ' << lst2.next << endl;
return 0;
}
0x555ab83aae70 0x555ab83aae90
0x555ab83aae70 0
0x7ffe1772b5e0 0x555ab83abec0
0x7ffe1772b5e0 0
Вдруг возник такой простой вопрос: нужно просто сравнить два массива чаров
Программа работает верно для небольших отрезков, но когда задается отрезок к примеру от 1 до 10000000 начинается долгий процесс перебораНужно...