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

Односвязные списки: как работают? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Из входных аргументов достать значения http://www.cyberforum.ru/cpp-beginners/thread880409.html
Здравствуйте, есть консольная программа time.exe. Запускаем ее через консоль: time.exe "15:00 PM" dms Нужно: как красиво распознать время из argv, т.е. "15:00 PM" ? Нужно, чтобы переменные приняли: int hh; // приняли часы int mm; // приняли минуты char* part = new char; // приняли PM
C++ Алгоритм сложения точек эллиптической группы на с++ День добрый всем! Пытаюсь реализовать алгоритм сложения точек эллиптической группы. Формулу можно глянуть тут: http://rudocs.exdat.com/docs/index-518356.html?page=15 или тут, если не любите рекламу: Вот что у меня получилось по всем изысканиям... Но не магу разобраться почему не работает... http://www.cyberforum.ru/cpp-beginners/thread880405.html
Найти номер элемента методом интерполяции C++
в первой части ошибок нет,показывает ошибку во второй части,где требуется найти номер элемента методом интерполяции.не могу понять где,может кто знает #include <iostream.h> #include <math.h> int main() {int item; int j,Np,N1,Nsr,temp,i,y,N; int l=0,u=99; float z; int x={1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
Динамически менять имя файла (или папки) C++
Здравствуйте еще раз, вот код создания файла ofstream omeg1; omeg1.open("om+'char(iter)'\\Omega_1.txt"); for(int j=0; j<M+1; j++) for(int i=0; i<N+1; i++) { omeg1<<-1.+i*h<<":"<<-1.+j*h<<":"<<fabs(epsilon_1-toch)<<";"; if(i==N) omeg1<<endl;
C++ Даны вещественные числа a и b (a<b) http://www.cyberforum.ru/cpp-beginners/thread880385.html
Даны вещественные числа a и b (a<b).Сформировать матрицу Х(10,10) элементами которой яв-ся вещ-ые случайные числа, равномерно распределенные на отрезке найти матрице строку с минимальным эл-м и поменять ее местами с первой строкой
C++ Классы (вывести на экран информацию о треугольнике: равносторонний, равнобедренный или разносторонний) #include<iostream> #include<math.h> #include<string> using namespace std; class Triangle { private: int a; int b; int c; подробнее

Показать сообщение отдельно
Jazzis
1 / 1 / 0
Регистрация: 27.05.2013
Сообщений: 15
03.06.2013, 14:32  [ТС]     Односвязные списки: как работают?
pizurok, а почему в curr->next не записывается NULL, в последнем ж элементе нужно чтобы next равнялось NULL? Просто объясните, может я чего-то не знаю.

Добавлено через 1 час 39 минут
Вообщем написал функцию для добавления записи в конец, все работает без ошибок, но когда просматриваю список функцией для просмотра, пишет, что он EMPTY. Вот весь код:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
struct Person {
    int id; 
    int age;
    int number;
    char* fio;
    char* prof;
    char* party;
    bool sud;
};
 
struct Base {
    Person person;
    struct Base *next;
} *head;
 
Base* append(void) {
   struct Base *curr;
   curr = (struct Base *)malloc(sizeof(struct Base));
   while (curr->next != NULL)
      curr = curr->next;
   curr->next = new Base;
   curr = curr->next;
   //curr->data = x;
   //curr->next = NULL;
   return curr;
}
 
void display(struct Base *curr) {
   int i = 0;
   curr = head;
   //curr = (struct base *)malloc(sizeof(struct base));
   if (curr == NULL) {
      cout<<"EMPTY"<<endl;
      return;
   }
   while (curr->next != NULL) {
      printf("%d %s %d", curr->person.id,curr->person.fio,int(curr->person.sud));
      curr = curr->next;
      i += 1;
   }
   printf("\nTotal lines: %d \n", i);
}
 
int main()
{
    struct Base * db = NULL;
    int op1,op2;
    int num1(0),num2(0); // number of lines
    do {
        cout << "\n[1] New line\n[2] View\n[0] Exit\n>> ";
        cin >> op1;
        switch (op1) {
            case 1: {
                int i,k,x;
                char text[150];
                bool lgc;
                cout << "Number of lines: ";
                cin >> k;
                for (i=num1; i<k+num1 ;i++) {
                    db = append();
                    cout << "\nNumber of line: " << i+1 << endl;
                    db->person.id = i+1;
 
                    cout << "Fullname: ";
                    cin >> text;
                    db->person.fio = (char*)malloc(strlen(text)+1);
                    strcpy(db->person.fio, text);
 
                    cout << "Age: ";
                    cin >> x;
                    db->person.age = x;
 
                    cout << "Job: ";
                    cin >> text;
                    db->person.prof = (char*)malloc(strlen(text)+1);
                    strcpy(db->person.prof, text);
 
                    cout << "Party: ";
                    cin >> text;
                    db->person.party = (char*)malloc(strlen(text)+1);
                    strcpy(db->person.party, text);
 
                    cout << "Precinct number: ";
                    cin >> x;
                    db->person.number = x;
 
                    cout << "Record: ";
                    cin >> lgc;
                    db->person.sud = lgc;
                    db->next = NULL;
                }
                num1 = i;
                break;
            };
            case 2: 
                display(db);
                break;
            case 0: break;
            default: printf("Invalid command");
        }
    } while (op1 != 0);
}
Вроде же добавляются, или нет?
 
Текущее время: 06:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru