Arista Networks Interview Question for Software Developers
- -1of 1 vote
Answers#ifndef STACK_H
- aristainterview October 19, 2016 in United States
#define STACK_H
typedef struct my_stack_ {
unsigned char *buf;
size_t elem_count;
size_t elem_size;
size_t buf_size;
} my_stack_t;
typedef struct my_stack_ my_stack_t;
my_stack_t * my_stack_init(size_t elem_size);
void my_stack_push(my_stack_t *stack, void *elem);
int my_stack_pop(my_stack_t *stack, void *elem);
size_t my_stack_depth(my_stack_t *stack);
void my_stack_push(my_stack_t *stack, void *elem)
{
assert(stack && elem);
size_t offset = stack->elem_count * stack->elem_size;
if(offset >= stack->buf_size) {
size_t new_size = stack->buf_size * 2;
unsigned char *p = realloc(stack->buf, new_size);
stack->buf = p;
}
stack->elem_count++;
memcpy(stack->buf + offset, elem, stack->elem_size);
}
#endif
struct node {
int value;
struct node * next;
};
struct node * mylist;
mylist
[--]--
|
|
---->[ 3, --]---->[ 2, --]---->[ 1, X]
remove_matches( mylist, 2 );
mylist
[—]—:
|
| -----------------------
| | |
| | v
---->[ 3, | ] [ 2, --]---->[ 1, X]
mylist
[--]--
|
|
---->[ 3, --]---->[ 1, X]| Report Duplicate | Flag | PURGE
Arista Networks Software Developer