Организация Структур На Языке Си

  • Автор темы Ipumacool
  • Дата начала
I

Ipumacool

#1
что-то не получается,нужно исправить ошибку. вот задание: Реализуйте однонаправленный циклический список. Необходимо предусмотреть режим поиска требуемых элементов. А вот прога моя...
#include<stdio.h>
#include<conio.h>
struct spisok {
int info;
spisok *link;
};
spisok *first=NULL;
void add()
{
int data;
if (first==NULL)
{
first=new (spisok);  
printf("vvedite element \n");
scanf("%d",&first->info);
first ->info=data;
first ->link=NULL;
}
else
{
spisok *adr;
adr=first;
while (adr ->link!=NULL)
{
adr=adr->link;
}
adr->link=new (spisok);
printf("vvedite element \n");
scanf("%d" ,adr->info);
adr=adr->link;
adr->info=data;
adr->link=NULL;
}
}
void print()
{
}
void del()
{ spisok *adr, *adr1;
spisok *first;
int data;
adr=first;
if (adr->info==data)
{
first=adr->link;
delete adr;
}
else
{
while (adr->link->info!=data)
{ //Ї®Є  adr->link->info ­
adr=adr->link
}
adr1=adr->link;
adr->link=adr->link->link;
delete adr1;
}
}
main()
{
clrscr();
int n;
do
{
printf("1. Добавить элемент \n");
printf("2. Просмотреть содержимое \n");
printf("3. Удалить элемент \n");
printf("4. Поиск элемента  \n");
printf("5. Выход \n");
printf("Введите пункт меню: ");
scanf("%d", &n);
if (n==1)
add();
//if (n==2)
if (n==3)
del();
//if (n==4)
}
while (n!=5);
getch();
}
 
R

rrrFer

#2
фантастический бред
Код:
void add()
{
int data;
if (first==NULL)
{
first=new (spisok); 
printf("vvedite element \n");
scanf("%d",&first->info);
first ->info=data;
функция add должна добавлять что-то в список, запрос значения внутри функции - это не хорошо (но это мелочи, в вашем случае).
В последних 2 строках вы считываете значение узла и, затем, затираете его мусором, который находился в неинициализированной переменной
Код:
printf("vvedite element \n");
scanf("%d" ,adr->info);
adr=adr->link;
не хватает &

--------------
дальше просмотрел бегло:
А вот прога моя...
Код:
void print()
{
}
дописывайте, в чем конкретно проблема?

Код:
void del()
{ spisok *adr, *adr1;
spisok *first;
int data;
adr=first;
if (adr->info==data)
в data мусор, сначала инициализируйте, потом используйте.
компилируйте с -pedantic, многие из ваших ошибок всплывут сразу.

------------
задавайте конкретный вопрос - дадим конкретный ответ, писать за вас лабу ни у кого нет желания (тем более даром).