Показать сообщение отдельно

  #605  
Старый 07.06.2008, 22:11
Delimiter
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..
 
Ответить с цитированием