(*handle).size++; // E2109 Not an allowed type (несколько ошибок в последней функции)
#ifndef LINEAR_SEQUENCE_H_INCLUDED
#define LINEAR_SEQUENCE_H_INCLUDED
#include
typedef int LSQ_BaseTypeT; /* Тип хранимых в контейнере значений */
typedef void* LSQ_HandleT; /* Дескриптор контейнера */
#define LSQ_HandleInvalid NULL /* Неинициализированное значение дескриптора контейнера */
typedef void* LSQ_IteratorT; /* Дескриптор итератора */
typedef int LSQ_IntegerIndexT; /* Тип целочисленного индекса контейнера */
/* Функция, создающая пустой контейнер. Возвращает назначенный ему дескриптор */
extern LSQ_HandleT LSQ_CreateSequence(void);
/* Функция, добавляющая элемент в начало контейнера */
extern void LSQ_InsertFrontElement(LSQ_HandleT handle, LSQ_BaseTypeT element);
typedef struct LSQ_Container
{
//LSQ_BaseTypeT *ptr; //Тип хранимых в контейнере значений
LSQ_IntegerIndexT size; //Кол-во элементов //Тип целочисленного индекса контейнера
struct LSQ_Element *HeadElement;//указатель на первый элемент контейнера (вместо void - LSQ_Element)
struct LSQ_Element *TailElement;//указатель на последний элемент контейнера (вместо void - LSQ_Element)
};
typedef struct LSQ_Iterator
{
struct LSQ_Element *CurrentElement;//указатель на текущий эл-т
struct LSQ_Container *Container; //указатель на контейнер
};
typedef struct LSQ_Element
{
struct LSQ_Element *PrewElement; //указатели на пред. и след. элемент контейнера
struct LSQ_Element *NextElement;
LSQ_BaseTypeT Data;
LSQ_IntegerIndexT Index; //номер элемента
};
//______________________________________________________________________________
LSQ_HandleT LSQ_CreateSequence() //создать контейнер
{ // Потом все функции надо в отдельный фаил переместить [C++ Warning] linear_sequence.h(100): W8058 Cannot create pre-compiled header: code in header
struct LSQ_Container* handle = (struct LSQ_Container*)malloc(sizeof(struct LSQ_Container));
(*handle).size = 0;
(*handle).HeadElement = NULL;
(*handle).TailElement = NULL;
return (LSQ_HandleT)handle;
}
void LSQ_InsertFrontElement(LSQ_HandleT handle, LSQ_BaseTypeT element) /* Функция, добавляющая элемент в начало контейнера */
{
struct LSQ_Element* ElementHandle = (struct LSQ_Element*)malloc(sizeof(struct LSQ_Element));
(*ElementHandle).Data = element;
(*handle).size++; ////////////////////// [C++ Error]: E2109 Not an allowed type
if (*handle).size == 1 //////////////// [C++ Error]: E2109 Not an allowed type ///// [C++ Error]: E2188 Expression syntax
{
(*handle).TailElement = ElementHandle;
(*HeadElement).NextElement = NULL;
}else{
(*HeadElement).NextElement = (*handle).HeadElement;
*((*handle).HeadElement).PrewElement = ElementHandle;
}
(*HeadElement).PrewElement = NULL;
(*handle).HeadElement = ElementHandle; // ///////// [C++ Error]: E2109 Not an allowed type
}