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

запутался со списком - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Библиотека для генерации CHM файла http://www.cyberforum.ru/cpp-beginners/thread856025.html
Есть ли такая?
C++ Как выполнить задержку консоли Есть программа // Arith_adapt.cpp : Defines the entry point for the console application. // /* Д. Мастрюков, "Монитор", N1, 1994. Алгоритмы сжатия информации Часть 2. Арифметическое кодирование http://www.cyberforum.ru/cpp-beginners/thread856016.html
Продолжение строки C++
Как в с++ продолжить писать в строке, пример cin>>a; cout<<" - its chislo a"; должно написать так: 3 - its chislo a
C++ Как установить соединение с другим компьютером?
В C++ есть функция system(), которая выполняет тоже самое, что если открыть консоль и выполнить там одну из консольных команд (например cls или color и т. д.) Меня интересуют два вопроса: 1. Как установить соединение с другим компьютером при помощи функции system() 2. Как при помощи функции system() отправить печать на принтер. (Когда я отправляю команду принтеру печатать фаил, он пишет "Фаил...
C++ Определить количество уровней дерева и вычислить сумму значений узлов на каждом уровне http://www.cyberforum.ru/cpp-beginners/thread855988.html
Делаю лабораторную по С++ а там задание: Считав числовые значения из текстового файла, построить произвольное дерево, каждый узел которого будет любое количество дочерних узлов. - Определить количество уровней дерева. - Вычислить сумму значений узлов на каждом уровне и в крайнем слева и крайнем дело поддерева. Я смог сделать что бы считывалось из файла и помещалось в дерево значения. Как...
C++ Преобразование int к char Вот код #include <stdio.h> #include <math.h> #include <iostream.h> #include <cstdio> #include <fstream> #include <cstdlib> #include <string> using namespace std; #include <stdlib.h> подробнее

Показать сообщение отдельно
numin
Сообщений: n/a
04.05.2013, 23:08     запутался со списком
Всем доброго времени суток! Помогите пожалуйста разобраться, я сделал класс spisok , в нем несколько нужных мне структур и методов, покторые позваоляет работать со списком(там где ключ, значение, не помню точно как он называется). struct list *l = p.new_list(); ошибку мне компилятор выдает в этой строчке (здесь она номер 122), говоря что я не могу такое значение использовать для инициализации сущности. Заранее благодарю за любую оказанную помощь, ниже привожу текст программы :


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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <iostream>
using namespace std;
typedef int mkey_t;  // Тип ключа
typedef int value_t; // Тип значения
class spisok
{
public:
struct li {
   mkey_t key;
   value_t value;
   struct li* next;
};
 
struct list {
   struct li *first;
   int size;
};
 
struct list *new_list() {
   struct list *res = (struct list*) malloc(sizeof(struct list));
   res->first = NULL;
   res->size = 0;
   return res;
}
 
struct li* new_list_item(void) {
    struct li *res = (struct li*) malloc(sizeof(struct li));
    res->next = 0;
    return res;
}
 
void delete_items(struct li* it) {
   if ( it ) {
      if ( it->next ) {
         delete_items(it->next);
      }
      free( it );
   }
}
 
void delete_list(struct list *l) {
   if ( l ) {
      delete_items( l->first );
      free ( l ); 
   }
}
 
int insert_item( struct list *l, mkey_t key, value_t value ) {
   struct li *it = new_list_item();
   if ( it == NULL ) return 0;
   it->key = key;
   it->value = value;
   it->next = l->first;
   l->first = it;
   l->size++;
   return 1;
}
 
int insert_item_uniq( struct list *l, mkey_t key, value_t value ) {
   if ( l ) {
      struct li *it;
      for ( it = l->first; it != NULL; it = it->next ) {
         if (it->key == key) {
            it->value = value;
            return 1;
         }
      }
      return insert_item(l, key, value);
   
   } else {
      return 0;
   }
}
 
int delete_item( struct list *l, mkey_t key ) {
   struct li *it, *prev_it = 0;
   for (  it = l->first; it != NULL; prev_it = it, it = it->next ) {
      if ( it->key == key ) {
         if ( prev_it != 0 ) 
            prev_it->next = it->next;
         else
            l->first = it->next;
         free( it );
         l->size--;
         return 1;
      }
   }
   return 0;
}
 
void print_list ( struct list *l ) {
   struct li *it;
   printf( "Size=%d\n", l->size );
   for ( it = l->first; it != NULL; it = it->next ) {
      printf("(%d,%d) -> ", it->key, it->value);   
   }
   printf( "NULL\n" );
}
 
int find_item( struct list *l, mkey_t key, value_t *value) {
   struct li *it;
   for ( it = l->first; it != NULL; it = it->next ) {
      if ( it->key == key ) {
         *value = it->value;
         return 1;
      }
   }
   return 0;
}
};
 
void main()
{
    spisok  p;
    
   char cmd[1024];
   
   struct list *l = p.new_list();          //проблема в этой строчке
 
      fgets( cmd, sizeof(cmd), stdin );
      if ( strncmp( cmd, "ADD", 3 ) == 0 ) {
         mkey_t key;
         value_t value;
         if( sscanf(cmd + 3, "%d%d", &key, &value) == 2 ) {
            p.insert_item_uniq(l, key, value );
         } else {
            printf("Bad arguments: %s\n", cmd+3);
            printf("Usage: ADD <key> <value>\n");
         }
      } else if ( strncmp( cmd, "DEL", 3 ) == 0 ) {
         mkey_t key;
         sscanf(cmd + 3, "%d", &key );
         p.delete_item( l, key );
      } else if ( strncmp( cmd, "PRINT", 5) == 0 ) {
         p.print_list( l );
      } else if ( strncmp( cmd, "FIND", 4) == 0 ) {
         mkey_t key;
         value_t value;
         sscanf( cmd + 4, "%d", &key );
         if ( p.find_item( l, key, &value ) ) {
            printf("Value = %d\n", value);   
         } else {
            printf("Not found\n");
         }
      }
   }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru