Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выводится пустая строка после добавления данных 
:(
    Опции темы
nikramunger
  Дата 31.10.2013, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 31.10.2013

Репутация: нет
Всего: нет



Используя функцию add,добавляю данные,и после нее появляется пустая "строка" , когда использую функцию list
Код
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
struct spis
{char data[20];
  struct spis *v1; 
  struct spis *v2; 
  
};
void create(void); //создание списка
void list(spis *); //просмотр списка
void del(void); //отсеивание ненужных данных
void add(void);  //добавление списка
struct spis *head,*tail; 
main()
{
      int nom;
while(1)
{
        
  printf("\n 0.Заполнение списка с начала \n");      
  printf(" 1. Вывод списка с начала \n");
  printf(" 2. Вывод списка с конца  \n");
  printf(" 3. Удаление строки \n");
  printf(" 4. Дополнить список\n");
  printf(" 5. Выход \n");
  scanf("%d",&nom);
  switch(nom)
  {
    case 0: 
    create();  break;       
  case 1:
   list(head);break;
  case 2:
      list(tail); break;
  case 3:
       del();break;
  case 4:
       add();break;
  case 5:return 0;
  default:printf("Неверный режимм");
  }
}
getch();
}
void create(void)
{spis *p,*pred;
  pred=NULL;
  do { p=(spis *)malloc(sizeof(spis));
    printf(":Данные "); gets(p->data);
      p->v1=pred;
    if (pred != NULL)
      pred->v2=p;
    else
      head=p;
    pred=p;
    puts(" Закончить - <esc>");
}
while (getch()!=27);
  tail=p;
  tail->v2=NULL;
}
void add(void) 
{
do{            spis *p,*pn; 
            //clrscr();
            pn=(spis *)malloc(sizeof(spis)); /
            printf("Введите данные: ");
            gets(pn->data);            
            p=tail; 
            pn->v1=tail; 
            pn->v2=NULL;
            p->v2=pn;
            tail=pn; 
            puts(" Закончить - <esc>");
}while(getch()!=27);
}
 
 
void list(spis *p)
{if (p==head)
  while (p != NULL)
    {puts(p->data);
      p=p->v2;
    }
   else if (p==tail)
  while ( p!= NULL)
  {
        printf("\n%s",p->data);
    p=p->v1;
  }
  else
    puts("Неверный адрес ");
    getch();
  }
void del(void)
{spis *p,*temp;char f[20]; 
 
char *ach;
 
  p=head;
  while (p!=NULL)
  
    {ach=strrchr(p->data,'2');
  
  puts(ach);
        if (ach!=NULL) 
    {
  
        
            if (p==head) 
        {head=p->v2;
          head->v1=NULL;
          free(p);
          p=head;
        }
       else if (p==tail) 
      {tail=p->v1;
        tail->v2=NULL;
        free(p);
        p=tail;
      }
      else 
      {p->v2->v1=p->v1;
        p->v1->v2=p->v2;
        temp=p;
        p=p->v2;
        free(temp);
      }
    }
else 
p=p->v2;
}
getch();
}


Модератор: не забываем пользоваться кнопочкой "Код"

Это сообщение отредактировал(а) bsa - 1.11.2013, 10:30
PM MAIL   Вверх
borisbn
Дата 2.11.2013, 16:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



1. А что... это компилируется ?
Цитата(nikramunger @  31.10.2013,  11:21 Найти цитируемый пост)
pn=(spis *)malloc(sizeof(spis)); /

2. Вот здесь ты и выводишь пустую строку
Цитата(nikramunger @  31.10.2013,  11:21 Найти цитируемый пост)
 printf("\n%s",p->data);

Вот твоя программа - http://ideone.com/9SUQMW - всё работает

Добавлено через 2 минуты и 45 секунд
И ещё. Отформатируй код по человечески... Сам же запутаешься. И назови переменные повнятнее, а не 
Цитата(nikramunger @  31.10.2013,  11:21 Найти цитируемый пост)
p->v1

Цитата(nikramunger @  31.10.2013,  11:21 Найти цитируемый пост)
p=p->v2

Самому же понятней будет.



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.