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

Тема в разделе "C/C++/C#", создана пользователем Ipumacool, 30 окт 2012.

  1. Ipumacool

    Ipumacool Гость

    что-то не получается,нужно исправить ошибку. вот задание: Реализуйте однонаправленный циклический список. Необходимо предусмотреть режим поиска требуемых элементов. А вот прога моя...
    #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();
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

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

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

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

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

Поделиться этой страницей