
07.06.2008, 22:11
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
счас придумаем чиво нидь 8) .... скрипты не нужны плюсуйте!
Код:
struct spelem
{
int flag; //-1=net elementa 1=srednii element 2=poslednii
long znach;
char *p_prev; // ukazatel na prediduschii
char *p_next; // ukazatel na sleduiuschii
};
struct mspis
{
int flag;
spelem first;
};
mspis my_spisok;
void add_elem(long znach)
{
spelem *elem;
spelem *p;
int i;
if(my_spisok.first.flag==-1)
{
my_spisok.first.flag=2;
my_spisok.first.znach=znach;
}
else
{
for(elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
i++;
elem->flag=1;
p=new spelem;
elem->p_next=(char *)p;
p->flag=2;
p->p_prev=(char *)elem;
p->znach=znach;
}
}
void show_all()
{
spelem *elem;
spelem *p;
char buf[30];
for(elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
printf("%d\r\n",elem->znach);
printf("%d\r\n",elem->znach);
}
int find_elem(long znach)
{
spelem *elem;
spelem *p;
char buf[30];
int counter;
for(counter=1,elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
{
if(elem->znach==znach)
return counter;
counter++;
}
if(elem->znach==znach)
return counter;
else
return -1;
}
void delete_elem(int number)
{
spelem *elem;
spelem *p;
spelem *prev;
char buf[30];
int counter;
if(my_spisok.first.flag==2)
my_spisok.first.flag=-1;
else
{
for(counter=1,elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
{
if(counter==number)
{
prev=(spelem *)(elem->p_prev);
p=(spelem *)(elem->p_next);
prev->p_next=elem->p_next;
p->p_prev=elem->p_prev;
free elem;
}
counter++;
}
if(counter==number)
{
prev=(spelem *)(elem->p_prev);
prev->flag=2;
free elem;
}
}
}
void init_spisok()
{
my_spisok.first.flag=-1;
}
Последний раз редактировалось Delimiter; 08.06.2008 в 00:46..
|
|
|