Help me about C

I'm begin learn c.and i'm from vietnam because I'm speak english not good.
my question:Implement :stack as array or as linked list???????
Do you know what the following things are:

stack
array
linked list
I'm want :implement(=setup) stack use array (or linked list)??
you can write code or aglogius help me??? please...
My exercises: here
• Exercise 4: Implement
• stacks (as array)
• queues (as array)
• stacks (as linked list)
• queues (as linked list)
Last edited on
stack means the first thing that goes in is the last thing to come out
queue means the first thing that goes in is the first thing to come out

hope this helps / hope you can read this
@hoan: this in vijetnam language:
Ngăn xếp cuối cùng trong ra đầu tiên, có nghĩa là những gì bạn đặt trong lần đầu tiên, bạn sẽ chỉ có thể để có được sau khi bạn nhận được tất cả các yếu tố khác. Trong một danh sách liên kết hoặc một mảng, bạn có thể nhận được, hoặc đặt bất kỳ phần tử bất cứ lúc nào. Tôi đề nghị danh sách. Mảng chủ yếu là có kích thước cố định, và nó rất khó để làm cho họ năng động.
You could do it either way.

using an array
Advantages:
  simple
  needs only an index to know where the top of the stack is
  uses local memory
Disadvantages:
  maximum size
Looks like:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int stack[ 100 ];
int top = -1;

void push( int value )
  {
  top += 1;
  stack[ top ] = value;
  }

int pop()
  {
  int value = stack[ top ];
  top -= 1;
  return value;
  }

bool is_empty()
  {
  return (top < 0);
  }


using a linked list
Advantages:
  no predetermined maximum limit
Disadvantages:
  uses pointers
  uses heap memory
Looks like:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
struct node_t
  {
  int     value;
  node_t* next;
  };

node_t* stack = NULL;

void push( int value )
  {
  node_t* top = new node_t;
  top->value = value;
  top->next  = stack;
  stack = top;
  }

int pop()
  {
  int     value = stack->value;
  node_t* top   = stack->next;
  delete stack;
  stack = top;
  return value;
  }

bool is_empty()
  {
  return (stack == NULL);
  }

Hope this helps.
ok .thanks duoas.
Topic archived. No new replies allowed.