Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2.  
  3. #define DataType struct DataType
  4. #define Stack struct Stack
  5. #define Storage struct Storage
  6. #define StorageType enum StorageType
  7.  
  8. StorageType { VECTOR, LIST };
  9.  
  10. Storage {
  11.     Vector* vector;
  12.     List* list;
  13. };
  14.  
  15. void initVector(Vector* vector, size_t size);
  16. void initList(List* list);
  17. void initStorage(Storage* storage, StorageType storageType, size_t size) {
  18.     vector = list = NULL;
  19.     if(storageType == VECTOR)
  20.         initVector(storage->vector, size);
  21.     else if(storageType == LIST)
  22.         initList(storage->list);
  23. }
  24. int isImplementedUsingVector(Storage* storage) { return storage->vector != NULL; }
  25. int isImplementedUsingList(Storage* storage) { return storage->list != NULL; }
  26. void addElement(Storage* storage, DataType* element) {
  27.     if(isImplementedUsingList(storage))
  28.         pushBackList(storage->list, element);
  29.     else if(isImplementedUsingVector(storage))
  30.         pushBackVector(storage->vector, element);
  31. }
  32. void removeElement(Storage* storage) {
  33.     if(isImplementedUsingList(storage))
  34.         popBackList(storage->list);
  35.     else if(isImplementedUsingVector(storage))
  36.         popBackVector(storage->vector);
  37. }
  38.  
  39.  
  40. Stack {
  41.     Storage* storage;
  42.     size_t currentNumberOfElements;
  43.     size_t maxNumberOfElements;
  44. };
  45. void initStack(Stack* stack, StorageType storageType, size_t size) {
  46.         stack = malloc(sizeof(Stack));
  47.         stack->maxNumberOfElements = size;
  48.         stack->currentNumberOfElements = 0;
  49.         initStorage(stack->storage, storageType, size);
  50. }
  51. void push(Stack* stack, DataType* element) {
  52.     addElement(stack->storage, element);
  53.     stack->currentNumberOfElements++;
  54. }
  55. void pop(Stack* stack) {
  56.     removeElement(stack->storage);
  57.     stack->currentNumberOfElements--;
  58. }
  59.  
  60.  
  61. int main(void) {
  62.  
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement