powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема со списками
15 сообщений из 15, страница 1 из 1
Проблема со списками
    #33021400
rergomus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю вот так:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
typedef struct lit
  { char a;
    struct lit * next1;
  }  LIT;


 LIT * head1 = NULL;
 LIT * pnode1 = NULL;


 while ((k=fgetc(in))!='\n')
  {
     pnode1=(lit*)malloc(sizeof(lit));
     pnode1->a=k;
     pnode1->next1=NULL;
  }


 while (pnode1!=NULL)
 {
  printf("%c",pnode1->a);
 }



Почему список не распечатывается.
Может кто даст стандартные процедуры распечатки и создания списков?
...
Рейтинг: 0 / 0
Проблема со списками
    #33021449
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
1) Это Си или С++ ?
2) У вас списка вроде как не получится - у вас все присваивается в один указатель - pnode1.
3) утечки памяти
...
Рейтинг: 0 / 0
Проблема со списками
    #33022217
sever_5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rergomus
Может кто даст стандартные процедуры распечатки и создания списков?

На
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
struct spl
{
 int item;
 spl *next;
};

spl *root=NULL,*end;

void new_e(int item)
{
 spl *q;
 q=new spl;
 q->item=item;
 q->next=NULL;
 if (root==NULL)
  root=q;
 else end->next=q;
 end=q;
}

void print()
{
 spl *q=root;
 while (q!=NULL) printf (" %d",q->item);
}

Обычный односвязный список
...
Рейтинг: 0 / 0
Проблема со списками
    #33022267
_рубль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
typedef struct lit
{ 
public:
    char a;
    lit *next;
    lit();
    lit(char a_);
    ~lit();
    void add_lit();
    void add_lit(char a_);
    void print();
}  LIT;

lit::lit(){next = NULL;}

lit::lit(char a_){
   next = NULL;
   a = a_;
}

lit::~lit(){ 
   if(next != NULL) delete next;
}

void lit::add_lit(){
   if(next!=NULL) next->add_lit();
   else next = new lit();
}

void lit::add_lit(char a_){
   if(next!=NULL) next->add_lit(a_);
   else next = new lit(a_);
}

void lit::print(){
   printf("%c",a);
   if(next!=NULL) next->print();
}
...
Рейтинг: 0 / 0
Проблема со списками
    #33022276
rergomus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор
1) Это Си или С++ ?


Это СИ
...
Рейтинг: 0 / 0
Проблема со списками
    #33022289
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rergomus
Может кто даст стандартные процедуры распечатки и создания списков?
Юзай книгу: Г.Шилдт "Полный справоник по языку С"
и спи спокойно...
...
Рейтинг: 0 / 0
Проблема со списками
    #33022290
_рубль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
работа со структурами в СИ и С++ одинакова
...
Рейтинг: 0 / 0
Проблема со списками
    #33022304
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
причем здесь структуры.
В си нет оператора new/delete
...
Рейтинг: 0 / 0
Проблема со списками
    #33022819
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rergomusДелаю вот так:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
typedef struct lit
  { char a;
    struct lit * next1;
  }  LIT;


 LIT * head1 = NULL;
 LIT * pnode1 = NULL;


 while ((k=fgetc(in))!='\n')
  {
     pnode1=(lit*)malloc(sizeof(lit));
     pnode1->a=k;
     pnode1->next1=NULL;
  }


 while (pnode1!=NULL)
 {
  printf("%c",pnode1->a);
 }



Почему список не распечатывается.
Может кто даст стандартные процедуры распечатки и создания списков?

немного подправил:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
typedef struct lit
  { char a;
    struct lit * next1;
  }  LIT;


 LIT * head1 = NULL;
 LIT * pnode1 = NULL;
 LIT * pnode_item = NULL;


 while ((k=fgetc(in))!='\n')
  {
     pnode1=(lit*)malloc(sizeof(lit));
     pnode1->a=k;
     pnode1->next1=NULL;
     if (head1 == NULL)
     {
         head1 = pnode_item = pnode1;
     } else
     {
         pnode_item->next1 = pnode1;
         pnode_item = pnode1;
     }
  }

 pnode1 = head1;
 while (pnode1!=NULL)
 {
  printf("%c",pnode1->a);
 }

ЗЫ: думаю тот кто не знает С, не умеет и на С++ программить
...
Рейтинг: 0 / 0
Проблема со списками
    #33022869
_рубль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zuzuЗЫ: думаю тот кто не знает С, не умеет и на С++ программить:)
...
Рейтинг: 0 / 0
Проблема со списками
    #33024337
rergomus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор
{
pnode1=(lit*)malloc(sizeof(lit));
pnode1->a=k;
pnode1->next1=NULL;
if (head1 == NULL)
{
head1 = pnode_item = pnode1;
} else
{
pnode_item->next1 = pnode1;
pnode_item = pnode1;
}
}


Объясните пжлста вот это
...
Рейтинг: 0 / 0
Проблема со списками
    #33024356
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rergomus автор
{
pnode1=(lit*)malloc(sizeof(lit));
pnode1->a=k;
pnode1->next1=NULL;
if (head1 == NULL)
{
head1 = pnode_item = pnode1;
} else
{
pnode_item->next1 = pnode1;
pnode_item = pnode1;
}
}


Объясните пжлста вот это
Если по-простому, то:
- создается элемент списка;
- если это первый элемент(списка еще не существует), то он же становится головным (head1 = pnode_item = pnode1;)
- если это уже не первый элемент, то он добавляется в список (pnode_item->next1 = pnode1; ) и становится текущим (pnode_item = pnode1; )

Кстати, в цикле печати списка явно не хватает перемещения по списку (pnode_item=pnode_item->next1). А без этого получаем "зацикливание", когда первый элемент будет печататься бесконечно...
...
Рейтинг: 0 / 0
Проблема со списками
    #33024419
rergomus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор
pnode1 = head1;
while (pnode1!=NULL)
{
printf("%c",pnode1->a);
}


Почему же тогда мы печатаем pnode1 а не pnode_item и всё вроде работает правильно????
...
Рейтинг: 0 / 0
Проблема со списками
    #33024608
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rergomus автор
pnode1 = head1;
while (pnode1!=NULL)
{
printf("%c",pnode1->a);
}


Почему же тогда мы печатаем pnode1 а не pnode_item и всё вроде работает правильно????

А подумать?
Здесь же используется адресация. И строка pnode1 = head1 обозначает, что в pnode1 после выполнения этого оператора будет находиться адрес головного элемента списка. То же самое можно было записать pnode_item = head1 (естественно, принимая во внимание область видимости переменных: к моменту присваивания переменная pnode_item должна быть доступна функции...)
А то, что я написал pnode_item, а не pnode1, так это не углядел... Ты уж извини...
Здесь ведь работает не компилятор, а голова. Здесь важен принцип...
...
Рейтинг: 0 / 0
Проблема со списками
    #33025397
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C. rergomus автор
pnode1 = head1;
while (pnode1!=NULL)
{
printf("%c",pnode1->a);
}


Почему же тогда мы печатаем pnode1 а не pnode_item и всё вроде работает правильно????

А подумать?
Здесь же используется адресация. И строка pnode1 = head1 обозначает, что в pnode1 после выполнения этого оператора будет находиться адрес головного элемента списка. То же самое можно было записать pnode_item = head1 (естественно, принимая во внимание область видимости переменных: к моменту присваивания переменная pnode_item должна быть доступна функции...)
А то, что я написал pnode_item, а не pnode1, так это не углядел... Ты уж извини...
Здесь ведь работает не компилятор, а голова. Здесь важен принцип...
ага, точно, неугледел, надо :
Код: plaintext
1.
2.
for(pnode1=head1; pnode1; pnode1 = pnode1->next1)
    printf("%c",pnode1->a);
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема со списками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]