| # | Problem | Pass Rate (passed user / total user) |
|---|---|---|
| 13043 | Dynamic Stacks using Dynamic Arrays |
|
| 13044 | Dynamic Stacks using Linked Lists |
|
Description
Define dynamic stacks as follows.
struct stack { int *stack_buffer; int top; int max_size; };
Implement the following four functions as shown in 13043.c.
- void stack_init(struct stack *s, int size);
- Use dynamic memory allocation to allocate appropriate memory according to size.
- void stack_destroy(struct stack *s);
- Free the stack’s memory
- void dyn_push(int elem, struct stack *s);
- Push elem to the stack. If it is full, double its size and push elem.
- int dyn_pop(struct stack *s);
- Pop an element from the stack as return value.
- If top < max_size/4, shrink the stack’s size by half (as max_size/2).
- If the stack is empty before the pop operation, use printf("Stack is empty!\n"); and return the value -100000.
- int show_stack(struct stack *s);
- If stack is empty, print "Empty", Else; print "Stack contains "
- Loop through the stack, printing all of the elements in the buffer.
- Finally, print "top=%d, max_size=%d\n"
UPDATE:
If you have presentation error issues please consider formatting your printf statements as follows:
-
" top=%d, max_size=%d\n"
The following must be included when submitting:
#include <stdio.h> #include <stdlib.h> struct stack { int *stack_buffer; int top; int max_size; }; /* Your Code Here. */ void function1(...) void function2(...)
Input
Output
Sample Input Download
Sample Output Download
Partial Judge Code
13043.cPartial Judge Header
13043.hTags
Discuss
Description
Define a stack node as
struct stacknode { int data; struct stacknode ∗next; };
Implement the following four functions as shown in 13044.c:
- void push(struct stacknode **ptr2head, int elem);
- Since the stack top has to be modified during pushing, we send a pointer to pointer to struct stacknode.
- int pop(struct stacknode **ptr2head);
- We send a pointer to pointer to struct stacknode for the same reason.
- After popping, you should return the memory of the popped element.
- If the stack is empty and nothing can be popped, use printf("stack is empty!\n");
- void show(struct stacknode *head);
- Show all elements in the stack beginning with the top element.
- If the stack is empty, use printf("empty stack\n");
The following must be included when submitting:
#include <stdio.h> #include <stdlib.h> struct stacknode { int data; struct stacknode *next; }; /* Your Code Here. */ void function1(...) void function2(...)