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

Односвязный линейный список - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Текстовые файлы http://www.cyberforum.ru/cpp-beginners/thread320756.html
Задание: Дана строка S, состоящая из 10 цифр, и файл с русским текстом. Зашифровать файл, выполнив циклическую замену каждой русской буквы, стоящей на K-й позиции строки, на букву того же регистра,...
C++ Code::Blocks В Code::Blocks когда ты откомпилил программу в Debug, после внес изменения и снова "откомпилил", то нет результата от 2-й компиляции - программа работает так же, как и в первый раз, даже если вносишь... http://www.cyberforum.ru/cpp-beginners/thread320754.html
C++ База данных библиотеки
всем здравствуйте. у меня появилась проблема. нужно написать программу. вот задание: Написать программу , которая содержит текущую информацию о книгах в библиотеке. Сведения о книгах содержат:...
C++ почему прога не пашет?
/*Цель программы: Вычислить минимум F(x)=k*(a*x+b)*P(x) на отрезке с точностью eps P(x) - интерполяционный многочлен от f(x) ф-ия f(x) задана таблично: x 1.05 1.15 1.25 1.35
C++ Исправление программы http://www.cyberforum.ru/cpp-beginners/thread320722.html
Простите мне что я такой неуч. Мне написали программу, но с некоторым отличием от того что я знаю: строчки scanf и prrintf такого вида для мня совсем непонятны. Вот сама программа:#include <stdio.h>...
C++ operator = для объекта, содержащего CStdioFile Приветствую всех. Возникла проблема с реализацией оператора присваивания для класса, содержащего CStdioFile. Получить копию CStdioFile мне не удалось... метод Duplicate() в нем не реализован... подробнее

Показать сообщение отдельно
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
17.06.2011, 21:50
Например вот так.
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct ValueType {
  char *description;
  char *word;
} ValueType;
 
typedef struct Node {
  struct Node *next;
  ValueType value;
} Node;
 
typedef struct List {
  Node *first;
} List;
 
Node* NodeNew(const char *word, const char *description, Node *next) {
  Node *result = (Node*)malloc(sizeof(Node));
  result->next = next;
  result->value.description =
    strcpy((char*)malloc(strlen(description) + 1), description);
  result->value.word =
    strcpy((char*)malloc(strlen(word) + 1), word);
  return result;
}
 
void NodeDelete(Node *node) {
  free(node->value.description);
  free(node->value.word);
  free(node);
}
 
void ListNew(List *list) {
  list->first = NULL;
}
 
int ListIsEmpty(List *list) {
  return (list->first == NULL);
}
 
Node* ListLastNode(List *list) {
  Node* result = list->first;
  while (result != NULL && result->next != NULL)
    result = result->next;
  return result;
}
 
void ListPushBack(List *list, const char *word, const char *description) {
  Node *node = NodeNew(word, description, NULL);
  if (ListIsEmpty(list)) {
    list->first = node;
  } else {
    Node *last_node = ListLastNode(list);
    last_node->next = node;
  }
}
 
int ListSize(List *list) {
  int result = 0;
  Node *node = list->first;
  while (node != NULL) {
    node = node->next;
    ++result;
  }
  return result;
}
 
void ListPrint(List *list) {
  Node *node = list->first;
  while (node != NULL) {
    printf("%s: %s\n", node->value.word, node->value.description);
    node = node->next;
  }
}
 
const char *ListFindByWord(List *list, const char *word) {
  static const char not_found[] = "No help text availiable.";
  Node *node = list->first;
  while (node != NULL) {
    if (strcmp(node->value.word, word) == 0)
      return node->value.description;
    node = node->next;
  }
  return not_found;
}
 
void ListDelete(List *list) {
  while (!ListIsEmpty(list)) {
    Node *next = list->first->next;
    NodeDelete(list->first);
    list->first = next;
  }
}
 
int main(int argc, char *argv[]) {
  // объявление списка
  List list;
  // инициализация списка
  ListNew(&list);
  // добавление элементов
  ListPushBack(&list, "Cow", "Large animal.");
  ListPushBack(&list, "Cat", "Small adorable pet.");
  ListPushBack(&list, "Chair", "A furniture, used for sitting on.");
  // размер списка
  printf("List contains %d element(s):\n", ListSize(&list));
  // вывод списка на экран
  ListPrint(&list);
  // поиск элемента по списку (поиск по слову, возвращает описание)
  printf("Help for 'Cat': %s\n", ListFindByWord(&list, "Cat"));
  printf("Help for 'Wolf': %s\n", ListFindByWord(&list, "Wolf"));
  // удаление списка
  ListDelete(&list);
  return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru