Здравствуйте.
Вот написанный код, и я уже не совсем его понимаю. Помогите разобраться, исправить ошибки.
В общем, нужно было создать список с возможностью добавления нового элемента в конец списка, удаление первого/последнего элемента, поиск и возвращение элемента с заданным id.
При попытке компиляции под gcc, много ошибок, мол, многие переменные не заданы и видимо совсем не распознает структуру Link в других функциях(нет декларации first, last, некорректная инициализация внутри класса статического элемента данных нецелочисленного типа «link*», ISO C++ запрещает инициализацию элемента «last» [-fpermissive], ошибка: в результате которой «first» становится статическим [-fpermissive] и тд)
Очень хотелось бы разобраться.
UPD
читать дальше
#include <iostream>
using namespace std;
class ListItem {
public:
int d;
ListItem *next;
};
class MyClass {
public:
ListItem *first, *last;
MyClass();
int len; //длина списка
void Add(int d);
void RemFirst();
void RemLast();
int GetItem(int id);
int Show();
};
MyClass::MyClass() {
first=NULL;
last=NULL;
len=0;
}
void MyClass::Add(int d) {
ListItem *newlink = new ListItem;
newlink->next=NULL;
newlink->d=d;
if(first==NULL) {
last=newlink;
first=newlink;
} else {
last->next=newlink;
last=newlink;
}
len++;
}
void MyClass::RemFirst() {
if(first==NULL) {
cout<<"List is Empty"<<endl;
} else {
delete first;
first=first->next;
len--;
cout<<"First item remove successfully"<<endl;
}
}
void MyClass::RemLast() {
if (first==NULL) {
cout<<"List Is Empty"<<endl;
return;
}
if(first->next==NULL) {
delete first;
first=last=NULL;
len=0;
cout<<"Last item remove successfully"<<endl;
} else {
ListItem *p=first;
while(p!=0) {
if(p->next==last) {
last=p;
delete p->next;
p->next=NULL;
len--;
cout<<"Last item remove successfully"<<endl;
break;
}
p=p->next;
}
}
}
int MyClass::GetItem(int id) {
ListItem* Item=first;
if(id>len) {
cout<<"ERR"<<endl;
}
for(int k=0;k<id;k++) {
Item=Item->next;
}
return Item->d;
}
int MyClass::Show() {
ListItem *current=first;
while(current!=NULL) {
cout<<current->d<<endl;
current = current->next;
}
}
int main() {
MyClass item;
item.Add(15);
item.Add(101);
item.Add(24);
item.Add(42);
item.Add(7);
item.RemLast();
item.Show();
}