Here's my first attempt to change from node pointers to arrays in linked list of stack.

Please be kind when criticizing and giving help.

I just don't have any examples in texts or lecture notes to know how to do this.

Code:/*****************/ /* stack.c */ /****************/ #include <stdlib.h> #include "stack.h" struct node { int data; struct node * next; /* int str[MAX_SIZE]; */ }; struct node *first; /* struct node first[]; */ int count; void make_empty() { first = NULL; /* first[0]=NULL; */ count = 0; } int is_empty(void) { return count == 0; } int is_full(void) { return 0; } void push(int insert_value) { int i = 0; struct node *new_node; /* struct node new[]; */ new_node=malloc(sizeof(struct node)); /* new[0]=malloc(sizeof(struct node)); */ if (new_node == NULL) { /* if (new[i] = NULL) { printf("Error in push: stack is full.\n"); exit (EXIT_FAILURE); } new_node->data = insert_value; /* new[i]->data=insert_value; */ new_node->next = first; /* new[i]++=first[i]; */ first = new_node; /* first[i] = new[i]; */ count++; } int pop(void) { struct node * top_node; /* struct node top[MAX_SIZE]; */ int i; if (is_empty()) { printf("Error in pop: stack is empty.\n"); exit (EXIT_FAILURE); } top_node=first; /* top[0] = first [i]; */ i = first->data; /* i = first[i]; */ first = first->next; /* first[i++]; */ free(top_node); /* free(top); */ count--; return i; } void print_list() { struct node *ptr; / * struct node list; */ if (first == NULL) { /* if (first[0]=NULL) { */ printf("List is empty.\n\n"); } else { printf("\n\nHere is your list: \n"); for (ptr=first;ptr;ptr=ptr->next) /* for (list=first;list[i]<MAX_SIZE;list[i]++) */ printf("%d\n",ptr->data); /* printf("%d\n",list[i]); */ return; } }