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

Создание словаря ключ - значение на C - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамическая Очередь (FIFO). http://www.cyberforum.ru/cpp-beginners/thread542127.html
Здравствуйте! Ребят, кому невмоготу , помогите реализовать структуру согласно этим требованиям: 1. Динамическую структуру требуется определить в виде шаблонного класса, реализующего заданное поведение. 2. Задать необходимые методы в классе, задающем поведение динамической структуры: a. очистку; b. добавление элемента в соответствии с поведением: c. вывод содержимого. Заранее...
C++ поиск в бинарном дереве Создать бинарное дерево. Занести числа: по возростанию, убыванию и случайные. После этого подсчитать количество операций необходимые чтобы найти каждое из чисел набора (3 наборов) в дереве, или удостовериться, что такого числа нет. typedef struct tag_tree{ int info; struct tag_tree *left, *right; }TREE; int sr=0, pr=0; // счетчик для сравнения и присвоения http://www.cyberforum.ru/cpp-beginners/thread542121.html
рекурсия, итеративный метод C++
помогите пожалуйста написать программу для итеративного способа вычисления. нужно вычислить элементы последовательности a(n) = a(n div 2) + a(n div 3), n>1 a(0)=1 я написал программу для рекурсии, а как через цикл задать не могу сообразить... #include "stdafx.h" #include <conio.h>
C++ Посоветуйте хорошую книгу по созданию оконных приложений
Кто посоветует хорошую книгу по С++ - созадние оконных приложений. Просто не пойму как визуально строить интерфейс и т. д. Вижуал 2010
C++ Сравнение указанных каталогов http://www.cyberforum.ru/cpp-beginners/thread542082.html
Можно ли как-нибудь сравнить два каталога между собой в C++ ? Например, как команда comp в командной строке? Добавлено через 13 минут Например, сравнить их размеры
C++ морской бой (выборочное заполнение массива). Как создать возможность расставления чего-либо(кораблей) в поле игры пользователем. подробнее

Показать сообщение отдельно
seregaponarin
4 / 4 / 0
Регистрация: 05.05.2010
Сообщений: 45
08.04.2012, 19:14  [ТС]     Создание словаря ключ - значение на C
Сделал словарь в виде двусвязного списка:

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
150
151
152
153
154
155
156
157
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
typedef struct dictionary
{
    char key[50];
    int value;
    dictionary *next;
    dictionary *prev;
};
dictionary *Head=NULL;
dictionary *Tail=NULL;
dictionary *pd=NULL;
 
dictionary *AddDict (dictionary *p)
{
    dictionary *new_p = new dictionary;
    printf("\nКлюч: ");
    scanf("%s",&new_p->key);
    printf("Значение: ");
    scanf("%d",&new_p->value);
    printf("Добавлено..");
    if(!Head)
    {
        new_p->next=NULL;
        new_p->prev=NULL;
        Head=new_p;
        Tail=new_p;
    }
    else
    {
        p=Tail;
        new_p->next=NULL;
        new_p->prev=p;
        p->next = new_p;
        Tail = new_p;
    }
    return new_p;
}
void PrintDict(dictionary *p)
{
    printf("\n");
    if(!Head)
    {
        printf("Словарь пуст...\n");
        return;
    }
    p=Head;
    while(p)
    {
        printf("key: %s\tvalue: %d\n",p->key,p->value);
        p=p->next;
    }
 
}
void Clear(dictionary *p)
{
  while(Head)
  {
      Head=p->next;
      delete p; 
      p=Head;
  }
  printf("\nСловарь очищен...\n");
}
bool Search(dictionary *p)
{
    p=Head;
    char word[50];
    printf("Ключ для поиска: ");
    scanf("%s",word);
    while(p)
    {
        if(!strcmp(p->key,word))
        {
            printf("\n__Результат поиска__\n\nkey: %s\tvalue: %d\n",p->key,p->value);
            return true;
        }
        p=p->next;
    }
    return false;
}
void Delete(dictionary *p)
{
    p=Head;
    char word[50];
    printf("Ключ для удаления: ");
    scanf("%s",word);
    while(p)
    {
        if(!strcmp(p->key,word))
        {
            if(p==Head)
            {
                Head=p->next;
                Head->prev=NULL;
            }
            else if(p==Tail)
            {
                Tail=p->prev;
                Tail->next=NULL;
            }
            else
            {
                //if(p->prev)
                    p->prev->next = p->next;
                //if(p->next)
                    p->next->prev = p->prev;
        
            }
            delete p;
            printf("\nУдален элемент с ключом %s",word);
            return;
        }
        p=p->next;
    }
    printf("\nТакого ключа в словаре нет...");
}
void Menu()
{
    int choose;
    printf("Выбор действия: \n\n");
    printf("1. Вывод словаря\n2. Добавление в словарь\n3. Поиск по ключу\n4. Удалить по ключу\n5. Очистить словарь\n0. Выход\n\n");
    scanf("%d",&choose);
    switch(choose)
    {
    case 1:
        PrintDict(pd);
        break;
    case 2:
        pd = AddDict(pd);
        break;
    case 3:
        if(!Search(pd))
            printf("\nПоиск не дал результатов...");
        break;
    case 4:
        Delete(pd);
        break;
    case 5:
        Clear(pd);
        break;
    }
    getch();
    if(choose!=0)
    {
        system("cls");
        Menu();
    }
}
void main()
{
    setlocale(LC_ALL,"Rus");
    Menu();
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru