int main() 
{
  int N = 50;
  srand(time(0));
  stack *s = StackNew();
  printf("Node size = %ld Stack size = %ld\n", sizeof(node), sizeof(stack));
  for (int i = 0; i < N; i++) {
    printf("Push %d\n", i);
    StackPush(s, i);
  }
 
  StackPrint(s);

  for (int i = 0; i < N; i++) {
    int n = StackPop(s);
    printf("Pop %d\n", n);
    if (i % 2 == 0)
      printf("Peek = %d\n", StackPeek(s));
  }
  
  printf("Size = %d\n", s->size);
  StackFree(s);
  long sum = sizeof(node) * 50 + sizeof(stack);
  printf("%ld total bytes\n", sum);
}
示例#2
0
int main(void)
{
  Stack s;
  
  if(StackAlloc(&s, 100) == -1){
    puts("すたっくの確保に失敗しました。");
    return (1);
  }
  
  while(1){
    int m, x;
    
    printf("現在のでーた数:%d/%d\n", StackNo(&s), StackSize(&s));
    printf("(1)ぷっしゅ (2)ぽっぷ (0)終了 :");
    scanf("%d", &m);

    if(m == 0){
      break;
    }

    switch (m){
    case 1:
      printf("でーた:");
      scanf("%d", &x);
      if(StackPush(&s, x) == -1){
	puts("すたっくへのぷっしゅに失敗しました。");
      }
      break;
    case 2:
      if(StackPop(&s, &x) == -1){
	puts("ぽっぷできません。");
      }else{
	printf("ぽっぷしたでーたは%dです。\n", x);
      }
      break;
    }
  }

  StackFree(&s);

  return (0);
}