Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2014, 13:27   #1
Nalia.dolpfin
 
Регистрация: 02.06.2013
Сообщений: 8
По умолчанию Двусвязный циклический список c++

Большие проблемы с выводом, много способов перепробовала он то зацикливается, то вообще ничего не показывает помогите пож.

Цитата:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
using namespace std;

struct slink
{
float x, y;
struct slink *prev, *next;
};
//int t = 0;
slink* p;
void insert (slink **dlst, float x, float y)//в начало списка
{
slink *dlst1 = new slink;

dlst1->x = x;
dlst1->y = y;
if(*dlst == NULL)
{
dlst1->next = dlst1;
dlst1->prev = dlst1;
(*dlst)=dlst1;
return;
}

dlst1->next = (*dlst)->next;
(*dlst)->next->prev = dlst1;
dlst1->prev = (*dlst);
(*dlst)->next = dlst1;
// t=t+1;

}

void append( slink *dlst, float x, float y )//в конец списка
{
slink *dlst1 = new slink;
if(dlst == NULL)
{
dlst1->x = x;
dlst1->y = y;
dlst1->next = dlst1;
dlst1->prev = dlst1;
dlst=dlst1;
return;
}
dlst1->x = x;
dlst1->y = y;
dlst->prev->next=dlst1;
dlst1->prev=dlst->prev;
dlst1->next;
dlst->prev=dlst1;
// t=t+1;


}

void del (slink**dlst)//удаление последнего
{
slink* dlst1;
//t=t-1;
if ((*dlst)==NULL) return;
if ((*dlst) == (*dlst)->next )
{
delete [] *dlst;
*dlst=NULL;
}
if (*dlst==NULL) return;

dlst1=(*dlst)->prev;
(*dlst)->prev=(*dlst)->prev->prev;
(*dlst)->prev->next=*dlst;
delete[]dlst1;
}

void show (slink *q) //вывод списка
{

/*slink *temp;
temp=q;
printf("\n%f %f", temp->x, temp->y);
temp=temp->next;
t=t-1;
if(t==-1){ t=0; return;}
show(q->next);
*/

if (q)
{

printf ("\n %f, %f", q->x,q->y);
show(q);
}
//else return;
}


void main ()
{
slink *dlst =0; //appendHead(10,10);
//slink *p;
insert(&dlst,20, 20);//в начало списка
insert(&dlst,30,30);//в начало списка
insert(&dlst,40,40);//в начало списка
insert(&dlst,50,50);//в начало списка
show(dlst);
append(dlst,60,60);//в конец списка
append(dlst,70,70);//в конец списка
show(dlst);
del(&dlst);
del(&dlst);
del(&dlst);

del(&dlst);
del(&dlst);
del(&dlst);

_getch();

}
Nalia.dolpfin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двусвязный список Jess Mailes Помощь студентам 6 03.06.2012 21:47
Двусвязный список narcot Visual C++ 13 28.05.2011 21:12
Циклический двусвязный список. Arcueid1691 Общие вопросы C/C++ 2 10.11.2010 18:58
двусвязный список Work Group Помощь студентам 0 24.05.2010 21:27