Форум программистов, компьютерный форум CyberForum.ru

Динамический однонаправленный список - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как это работает? http://www.cyberforum.ru/cpp-beginners/thread613987.html
#include <iostream> #include <cstring> using namespace std; int main() { char* s=new char; s="Jonessssssssssssssssssssssss"; char* l =new char; l="Doe";
C++ Переворот строки Добрый вечер. Нужно перевернуть строку 12345 в 54321. Подскажите, где неверно в коде. Если можно не кодом, а словами (идеей), чтобы самому догнать как сделать. #include <iostream> #include <cstdlib> #include <string.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread613971.html
C++ В заданной матрице А (N , М) поменять местами столбцы с номерами P и Q
В заданной матрице А (N , М) поменять местами столбцы с номерами P и Q( Помогите с обиснениями кто может , что к чему и как , как что делаеться )
Среда разработки, работающая на os android C++
Здравствуйте. Сейчас учусь на программиста(1 курс))) и есть некоторая необходимость таскать с собой ноутбук чтобы делать всяческие исправления в своих работах прямо в институте. Хотел приобрести ноуд, но для меня дороговато....15 килорублей. Увидел планшет за 5 килорублей, по железу ничё так... Так вот вопрос. Существует ли какая либо среда разработки C++, работающая непосредственно на...
C++ Как сделать такое окно http://www.cyberforum.ru/cpp-beginners/thread613900.html
Всем доброго времени суток!У меня есть вопрос.Как можно сделать такое окно(смотртите прикрепление)? Есть достоверная информация,что это приложение написано на Microsoft Visual C++ 6.0.Хочу в своем проекте использовать аналогичное окно. UPD:Красная рамка - неподвижная область,зеленая - можно прокручивать вверх,вниз. Если ошибся разделом,прошу перенести тему.
C++ Для чего const после phone() const char* phone()const {return phone_;} Для чего const после phone()? подробнее

Показать сообщение отдельно
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.06.2012, 00:06     Динамический однонаправленный список
С двумя файлами попозже разберусь. А пока, если написать функцию печати так:
C++
1
2
3
4
5
6
7
8
9
10
11
void printNode(pNode *fir)
{
    pNode *Curr;
    Curr = fir;
    while (count)
    { 
        printf("\t%d\t%d", (*Curr).ch, (*Curr).it);
        Curr = (*Curr).next;
        count--;
    }
}
, то должно работать. Но вызов функции openfileandread() и печать должны быть последовательны. То есть: openfileandread(&first); printNode(first);, потом openfileandread(&second); printNode(second);
Но мне кажется, что всё как-то не так должно делаться. Много непонятного в коде. Например, зачем вообще z?

Добавлено через 4 часа 29 минут
Вот этот код более правильный.
C++
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
typedef struct Node
            {
              int ch;
              int it;
              struct Node *next;
            };
 
Node *s1;
Node *last_s1;
Node *s2;
Node *last_s2;
 
int openfileandread(Node **s, Node **s_last)
{
   FILE *f1;
   
   char filename[40];
   printf("Write file open for read Note  ");
   scanf("\t%s", &filename);
   f1 = fopen(filename, "r");
  
   Node *First = (Node*)malloc(sizeof(Node));
    
    if (!feof(f1))
    fscanf(f1, "%d%d", &(First -> ch), &(First -> it));
    First -> next = NULL;
    
    *s = First;
    
    Node *Last;
    Last = First;
    
    while (!feof(f1))
 { 
    Node *Next = (Node*)malloc(sizeof(Node));
    fscanf(f1, "%d%d", &(Next -> ch), &(Next -> it));
    Last -> next = Next;
    Last = Next;
}
   Last -> next = NULL;
   *s_last = Last;
   
   fclose(f1);
   return 0;
}
 
void printNode(Node *s)
{
    Node *Curr;
    Curr = s;
    while (Curr != NULL)
    { 
        printf("\t%d\t%d", Curr -> ch, Curr -> it);
        Curr = Curr -> next;
    }
    printf("\n");
}
 
void slivanie(Node *s1, Node  *s2, Node *last_s1, Node *last_s2)
{
    printf("\n\n");
    last_s1 -> next = s2;
    printNode(s1);
}
 
int main()
{
    openfileandread(&s1, &last_s1);
    openfileandread(&s2, &last_s2);
    printNode(s1);
    printNode(s2);
    
    slivanie(s1, s2, last_s1, last_s2);
    
    return 0;
}
Добавлено через 12 минут
Цитата Сообщение от Diabolisk Посмотреть сообщение
возник вопрос как сделать так что бы оба списка были в другом списке при том что бы они не были уничтожены.
Тут без копирования, наверное, не обойтись. Как вариант, можно организовать счётчики при создании элементов списка и, после слияния, при распечатке, выводить то количество данных, которое было в каждом списке. Адреса начала списков (откуда нужно будет начинать распечатку) сохранены в *s1, *s2.
 
Текущее время: 23:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru