毎度お世話になっております。
高橋麻奈さんの「やさしいC アルゴリズム」をみて勉強しているのですが、リストを使ったスタックのコードで、がコンパイルエラーになってしまいました。
コードは下の通りです。
C
1#include <stdio.h> 2#include <malloc.h> 3 4void init(void); 5void add(void); 6void push(stack *s,int n); 7void delete(void); 8int pop(void); 9void display(void); 10void release(void); 11 12typedef struct _stack { 13 int data; 14 struct _stack *next; 15}stack; 16 17stack *head; 18 19int main(void) 20{ 21 int res; 22 23 init(); 24 while (1) { 25 printf("1--add\t2--delete\t3--show\t0--exit\n"); 26 scanf("%d\n", &res); 27 if (!res) { 28 break; 29 } 30 switch (res) { 31 case 1: 32 add(); 33 break; 34 case 2: 35 delete(); 36 break; 37 case 3: 38 display(); 39 break; 40 } 41 } 42 release(); 43 44 return 0; 45} 46void init() 47{ 48 head=NULL; 49 50} 51void add(void) 52{ 53 stack *s; 54 int n; 55 56 s=(stack*)malloc(sizeof(stack)); 57 if (s==NULL) { 58 printf("error\n"); 59 return ; 60 } 61 62 printf("put number\n"); 63 scanf("%d\n", &n); 64 push(s,n); 65 printf("%d has added.\n"); 66 67} 68void push(stack *s,int n) 69{ 70 s->data=n; 71 s->next=head; 72 head=s; 73} 74void delete(void) 75{ 76 printf("%d has just deleted \n",pop()); 77 78} 79int pop() 80{ 81 stack *s; 82 int n; 83 84 s=head; 85 86 n=s->data; 87 head=s->next; 88 free(s); 89 return n; 90 91} 92void display(void) 93{ 94 stack *s; 95 s=head; 96 97 98 printf("----\n"); 99 while (s!=NULL) { 100 printf("%d\n", s->data); 101 s=s->next; 102 } 103 printf("----\n"); 104} 105void release(void) 106{ 107 stack *s,*tmp; 108 109 s=head; 110 tmp=head; 111 while (s!=NULL) { 112 tmp=s->next; 113 free(s); 114 s=tmp; 115 } 116} 117
これをコンパイルすると
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
list_stack.c:
エラー E2147 list_stack.c 6: 引数宣言は 'stack' で始められない
警告 W8075 list_stack.c 64: 問題のあるポインタの変換(関数 add )
エラー E2356 list_stack.c 69: 'push' の再宣言で型が一致していない
エラー E2344 list_stack.c 6: 一つ前の 'push' の定義位置
- 3 errors in Compile *
と返ってきます。
どうすればよいのか、どなたかご教授いただけないでしょうか?
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/03 10:29