Определение типа данных массива структур стека, определенных для заголовка из основной программы - PullRequest
0 голосов
/ 05 мая 2019

Я изучаю язык Си - и в настоящее время изучаю структуры данных.Я реализую базовый стек с массивом в заголовочном файле, и я хотел бы иметь возможность включать его в различные основные программы.

Мой файл stack.h:

#define STACK_SIZE 10 
typedef int elem; // Data Type of the stack array

// Stack Struct
struct stack {
  elem array[STACK_SIZE]; // Stack Data table
  int top; // Stack Head
};

typedef struct stack STACK;

Я использую typedef для типа данных массива стека в моем stack.h.

Однако я хотел бы иметь возможность определять другой тип данных для каждого случая из любого из моих основных.c файлы, которые будут включать в себя мой stack.h.

Что-то вроде ниже:

// Main.c
#include <stdio.h>
#include <stdlib.h>
#include "stack.h"

int main(){

    STACK st;
    // Here define somehow the desired data-type of my STACK.

}

Не уверен, имеет ли это смысл и возможно ли это сделать таким образом ...но если да, то как мне подойти к этому?

1 Ответ

1 голос
/ 05 мая 2019

Вы хотите сказать, что вам нужен один стек int, другой стек double и третий стек какой-то пользовательской структуры? Тогда действительно нет хорошей встроенной поддержки для этого в C.

Это может быть решено с помощью динамического выделения массива байтов с использованием функции «создать» или «инициализировать», которой передается размер данных. Затем вы используете размер элемента, чтобы выяснить положение каждого элемента в байтовом массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...