Это метод, который я написал в C. Он предназначен для вставки в связанном списке.Вставка в круглый связанный список (вывод не подходит по желанию)
void insert_beg()
{
temp=(struct node*)malloc(sizeof(struct node));
ptr=(struct node*)malloc(sizeof(struct node));
int data_value;
printf("Enter the value\n");
scanf("%d",&data_value);
temp->info=data_value;
if(header->link==NULL)//when there is no node
{
header->link=temp;
temp->link=header;
}
else//when atleast one node has been created
{
ptr->link=header->link;//ptr is pointing to where header was pointing.
header->link=temp;
temp->link=header;
}
printf("\n\n");
}
Это код для обхода (в основном отображения)
void traverse()
{
ptr=header->link;
while(ptr->link!=header)
{
ptr=ptr->link;
printf("%d\t",ptr->info);
}
printf("\n\n");
}
При запуске программы, выход для обхода ничего. Это похоже на то, что цикл for не работает. При вставке или какой-либо другой вещи отсутствует ошибка сегментации. Правильно ли моя логика? Если нет, то где я иду не так?
Я думаю, что условие должно быть 'if (header == NULL)'. Затем 'temp-> link = ptr-> link'. В противном случае вы потеряете исходную 'header-> link' – Sharad
в функции' insert_beg', почему создаются два объекта 'node'? – PRP
@PRP, когда я удалял объект ptr, возникает проблема с другой частью кода. У меня возникла ошибка сегментации. Вот почему .. – sindhugauri