OAIP_Mirror/lab26/TextProcessingDict/DictLinkedList.c
2024-12-06 20:08:12 +04:00

70 lines
1.4 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// Реализация АТД «Словарь» на Структуре данных «Односвязанный список»
//
#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
#include <stdlib.h>
#include "Dict.h"
#ifdef DICT_LINKED_LIST_C
// элемент односвязанного списка
struct Node {
char* word;
struct Node* next;
};
// Первый элемент списка
struct Node* first = NULL;
/* INSERT добавляет элемент в множество.
Множество содержит только уникальные элементы.
При повторном добавлении элемента в множество, множество не изменяется.
ЗДЕСЬ НЕТ ПРОВЕРКИ НА ДУБЛИРОВАНИЕ!!!!
*/
void Insert(char* word) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->next = first;
newNode->word = (char*)calloc(strlen(word) + 1, sizeof(char));
strcpy(newNode->word, word);
first = newNode;
}
/* MEMBER сообщает, является ли указанный элемент членом данного множества или нет. */
int Member(char* word) {
struct Node* ptr = first;
while (ptr != NULL) {
if (strcmp(ptr->word, word) == 0) {
return 1;
}
ptr = ptr->next;
}
return 0;
}
/* CREATE - создает словарь.
Вызывается перед началом использования словаря. */
void Create() {
first = NULL;
}
/* DESTROY - уничтожает словарь.
Вызывается после окончания использования словаря. */
void Destroy() {
while (first != NULL) {
struct Node* delNode = first;
first = first->next;
free(delNode->word);
free(delNode);
}
}
#endif