Есть структура - элемент двусвязного списка
Код:
struct Titm{
Titm * prv;
int itm;
Titm * nx;
};
Titm * prv;
int itm;
Titm * nx;
};
Код:
};
bool Next(Titm ** elem){
};
[/code]Поможете?
сюда :)
Обратись к крутому фрилансеру
Код:
#include <iostream>
using namespace std;
struct Titm{
int itm;
Titm* next;
Titm* prev;
};
// добавление в конец списка
void add(Titm** lst, int itm) {
Titm* p = new Titm();
p->itm = itm;
if(*lst != NULL){
p->next = *lst;
p->prev = (*lst)->prev;
(*lst)->prev->next = p;
(*lst)->prev = p;
} else {
*lst = p;
p->next = *lst;
p->prev = *lst;
}
}
//удаление всего списка
void clear(Titm* lst){
Titm* tmp, *ptr;
if(lst != NULL){
ptr = lst;
do {
tmp = ptr;
ptr = ptr->next;
delete tmp;
} while(ptr != lst);
}
}
int main(void){
Titm* lst = NULL;
for(int i = 0; i < 10; ++i)
add(&lst, i);
//вывести в обратном порядке
const Titm* p = lst->prev;
do {
cout << p->itm << ' ';
p = p->prev;
} while(p != lst->prev);
cout << endl;
//вывести в прямом порядке
p = lst;
do {
cout << p->itm << ' ';
p = p->next;
} while(p != lst);
cout << endl;
clear(lst);
cin.get();
return 0;
}
using namespace std;
struct Titm{
int itm;
Titm* next;
Titm* prev;
};
// добавление в конец списка
void add(Titm** lst, int itm) {
Titm* p = new Titm();
p->itm = itm;
if(*lst != NULL){
p->next = *lst;
p->prev = (*lst)->prev;
(*lst)->prev->next = p;
(*lst)->prev = p;
} else {
*lst = p;
p->next = *lst;
p->prev = *lst;
}
}
//удаление всего списка
void clear(Titm* lst){
Titm* tmp, *ptr;
if(lst != NULL){
ptr = lst;
do {
tmp = ptr;
ptr = ptr->next;
delete tmp;
} while(ptr != lst);
}
}
int main(void){
Titm* lst = NULL;
for(int i = 0; i < 10; ++i)
add(&lst, i);
//вывести в обратном порядке
const Titm* p = lst->prev;
do {
cout << p->itm << ' ';
p = p->prev;
} while(p != lst->prev);
cout << endl;
//вывести в прямом порядке
p = lst;
do {
cout << p->itm << ' ';
p = p->next;
} while(p != lst);
cout << endl;
clear(lst);
cin.get();
return 0;
}
Цитата: xAtom
Вот 2-ух связной список правда кольцевой, да и пофиг.
Код:
#include <iostream>
using namespace std;
struct Titm{
int itm;
Titm* next;
Titm* prev;
};
// добавление в конец списка
void add(Titm** lst, int itm) {
Titm* p = new Titm();
p->itm = itm;
if(*lst != NULL){
p->next = *lst;
p->prev = (*lst)->prev;
(*lst)->prev->next = p;
(*lst)->prev = p;
} else {
*lst = p;
p->next = *lst;
p->prev = *lst;
}
}
//удаление всего списка
void clear(Titm* lst){
Titm* tmp, *ptr;
if(lst != NULL){
ptr = lst;
do {
tmp = ptr;
ptr = ptr->next;
delete tmp;
} while(ptr != lst);
}
}
int main(void){
Titm* lst = NULL;
for(int i = 0; i < 10; ++i)
add(&lst, i);
//вывести в обратном порядке
const Titm* p = lst->prev;
do {
cout << p->itm << ' ';
p = p->prev;
} while(p != lst->prev);
cout << endl;
//вывести в прямом порядке
p = lst;
do {
cout << p->itm << ' ';
p = p->next;
} while(p != lst);
cout << endl;
clear(lst);
cin.get();
return 0;
}
using namespace std;
struct Titm{
int itm;
Titm* next;
Titm* prev;
};
// добавление в конец списка
void add(Titm** lst, int itm) {
Titm* p = new Titm();
p->itm = itm;
if(*lst != NULL){
p->next = *lst;
p->prev = (*lst)->prev;
(*lst)->prev->next = p;
(*lst)->prev = p;
} else {
*lst = p;
p->next = *lst;
p->prev = *lst;
}
}
//удаление всего списка
void clear(Titm* lst){
Titm* tmp, *ptr;
if(lst != NULL){
ptr = lst;
do {
tmp = ptr;
ptr = ptr->next;
delete tmp;
} while(ptr != lst);
}
}
int main(void){
Titm* lst = NULL;
for(int i = 0; i < 10; ++i)
add(&lst, i);
//вывести в обратном порядке
const Titm* p = lst->prev;
do {
cout << p->itm << ' ';
p = p->prev;
} while(p != lst->prev);
cout << endl;
//вывести в прямом порядке
p = lst;
do {
cout << p->itm << ' ';
p = p->next;
} while(p != lst);
cout << endl;
clear(lst);
cin.get();
return 0;
}
Я просто посмотреть а переделывать буду сам под конкретные цели. Так что извини и спасибо