リンクリストのコンパイルができない
OS windows7
microsoft visualC++ 2010 Expless
新規作成→ win32コンソールアプリケーション→からのプロジェクト→完了 追加 →新しい項目
でコンパイルしても(addData識別子が見つかりませんでしたと表示
されます
(C++がintを設定値としてサポートしていませんとエラー)がでてしまいます
多分ソース自体は何度も見直しているので問題が
ないとは思うのですが設定の方が間違えているのかもしれません
どなたか理由が分かる方お教えください
#include <stdio.h>
#include <malloc.h>
#include<string.h>
typedef struct _STRLIST{
int id;
char name[128];
struct _STRLIST *next;
} STRLIST;
void enterData(STRLIST *);
void listData(STRLIST *);
STRLIST *getDate(STRLIST *, int);
STRLIST *getLastData(STRLIST *);
STRLIST *addDate(STRLIST *,STRLIST *);
STRLIST *insertData(STRLIST *, int, STRLIST *);
STRLIST *deleteData(STRLIST *, int);
STRLIST *clearData(STRLIST *);
main()
{
STRLIST *listtop = NULL;
STRLIST inputData;
int index;
char cmd[20] ="";
STRLIST testdata[3] = {{1, "Ichiro"},{2, "Jiro"},{3, "Saburo"}};
listtop = addData(listtop, testdata);
listtop = addData(listtop, testdata+1);
listtop = addData(listtop, testdata+2);
printf("[Linked-List Test]\n");
printf("command=list/add/insert/delete/clear/guit\n");
while(strcmp(cmd,"guit") !=0){
printf("command:");
scanf("%s", cmd);
if(strcmp(cmd,"list") == 0) {
listData(listtop);
}
else if(strcmp(cmd, "add") ==0){
enterData(&inputData);
listtop = addData(listtop, &inputData);
}
else if(strcmp(cmd,"insert") ==0) {
printf("何番目のあとに挿入しますか:");
scanf("%d", &index);
enterData(&inputData);
listtop= insertData(listtop,index,&inputData);
}
else if (strcmp(cmd,"delete") ==0){
printf("何番目のデータを削除しますか:");
scanf("%d",&index);
listtop =deleteData(listtop,index);
}
else if(strcmp(cmd,"clear")== 0) {
listtop=clearData(listtop);
}
}
listtop=clearData(listtop);
}
void enterData(STRLIST *p)
{
printf("追加するデータを入力してください\n");
printf("id:");
scanf("%d",&(p->id));
printf("name:");
scanf("%s", &(p->name));
}
void listData(STRLIST *p)
{
int i= 1;
printf("No. data\n---- ----\n");
while (p !=NULL){
printf("04d id=%d name=%s\n", i, p->id, p->name);
p = p->next;
i++;
}
}
STRLIST *getData(STRLIST *p,int index)
{
int i;
if(index <1)
return NULL;
for(i=1; i<index; i++){
p=p->next;
if(p ==NULL && i<index)
return NULL;
}
return p;
}
STRLIST *getLastData(STRLIST *p)
{
if(!p)
return NULL;
while (p->next !=NULL)
p= p->next;
return p;
}
STRLIST *addData(STRLIST *listtop, STRLIST *newdata)
{
STRLIST *newitem, *p;
p=getLastData(listtop);
newitem =(STRLIST *)malloc(sizeof(STRLIST));
newitem->id=newdata->id;
strcpy (newitem->name, newdata->name);
newitem->next =NULL;
if(p == NULL)
return newitem;
p->next=newitem;
return listtop;
}
STRLIST *insertData(STRLIST *listtop, int index,STRLIST *newdata)
{
STRLIST *p, *newitem;
p =getData(listtop,index);
newitem=(STRLIST *)malloc(sizeof(STRLIST));
newitem->id =newdata->id;
strcpy(newitem->name, newdata->name);
if(p == NULL) {
newitem->next =listtop;
return newitem;
}
newitem->next =p->next;
p->next =newitem;
return listtop;
}
STRLIST *deleteData(STRLIST *listtop, int index)
{
STRLIST *previtem, *delitem, *nextitem;
if(index < 1 || listtop ==NULL)
return listtop;
if(index ==1){
delitem =getData(listtop, index);
nextitem =delitem->next;
free(delitem);
return nextitem;
}
previtem =getData(listtop, index-1);
delitem =previtem->next;
nextitem =delitem->next;
free(delitem);
previtem->next =nextitem;
return listtop;
}
STRLIST *clearData(STRLIST *p)
{
while(p)
p = deleteData(p, 1);
return p;
}