- 註冊時間
- 2009-2-6
- 最後登錄
- 2023-10-8
- 主題
- 查看
- 積分
- 11
- 閱讀權限
- 20
- 文章
- 27
- 相冊
- 0
- 日誌
- 0
狀態︰
離線
|
想請教各為以下程式編譯錯誤百出,我又不懂到底是有哪些問題,能否請大家教我下面程式改怎們樣讓它可以執行嘛?
#include <iostream>
#define NODE
using namespace std;
typedef struct node NODE
{
int data;
struct node *link;
}NODE ;
NODE *new()
{
NODE *p;
p = (NODE *)malloc(sizeof(NODE));
if( p == NODE )
{
printf("記憶體不足");
exit(1);
}
return(p);
}
NODE *create()
{
NODE *list, *p, *q;
int i, n, d;
list=new();
list->link=NULL; p=list;
printf("輸入資料筆數:");
scanf("%d", &n);
for(i=1; i<=n; i++){
printf("輸入第%d筆資料",i);
scanf("%d", &d);
q=new();
q->data=d; q->link=NULL;
p->link=q;
p=q;
}
return(list);
}
NODE *search( NODE *list, int d )
{
NODE *p;
p=list->link;
while( p != NULL && p->data != d) p=p->link;
return(p);
}
NODE *prenode( NODE *list, NODE *q )
{
NODE *p;
p=list;
while( p != NULL && p->link != q) p = p->link;
return(p);
}
int insert(NODE *p, NODE *q)
{
q->link=p->link;
p->link=q;
}
void delete(NODE *p, NODE *q)
{
p->link=q->link;
free(q);
}
NODE *create()
{
NODE *list, *p, *q;
int i, n, d;
list=new();
list->link=NULL; p=list;
printf("輸入資料筆數:");
scanf("%d", &n);
for(i=1; i<=n; i++){
printf("輸入第%d筆資料",i);
scanf("%d", &d);
q=new();
q->data=d; q->link=NODE;
p->link=q;
p=q;
}
return(list);
}
NODE *search( NODE *list, int d )
{
NODE *p;
p=list->link;
while( p != NULL && p->data != d) p=p->link;
return(p);
}
NODE *prenode( NODE *list, NODE *q )
{
NODE *p;
p=list;
while( p != NULL && p->link != q) p = p->link;
return(p);
}
int insert(NODE *p, NODE *q)
{
q->link=p->link;
p->link=q;
}
int delete(NODE *p, NODE *q)
{
p->link=q->link;
free(q);
}
int length(NODE *list)
{
NODE *p;
int counter=0;
p=list->link;
while(p!=NULL){
counter++;
p=p->link;
}
return(counter);
}
void display(NODE *list)
{
NODE *p;
p=list->link;
while(p !=NULL){
printf("%5d",p->data);
p=p->link;
}
printf("\n");
}
int main()
{
NODE *list,*p,*q;
int loop=1,d,d1;
char input[8];
printf("***鏈結串列***\n");
printf("可執行下列指令:create,insert,delete,display,length,exit\n");
list=NULL;
do{
printf("==>");
scanf("%s", input);
if(strcmp(input, "create")==0)
{
list=create();
}
else if(strcmp(input, "delete")==0)
{
printf("輸入資料:");
scanf("%d", &d);
q=search(list, d);
if(q == NULL)
{
printf("找不到資料%d,故無法刪除\n", d);
}
else
{
p=prenode(list,q); delete(p,q);
}
else if(strcmp(input,"display")==0)
{
display(list);
{
else if(strcmp(input,"length")==0)
{
printf("串列中資料的個數=%d\n",length(list));
}
else if(strcmp(input,"exit")==0)
{
1oop=0;
}
else
{
printf("輸入錯誤\n");
}
} while(1oop);
} /*main()*/
執行結果:
***鏈結串列***
可執行下列指令:create, insert, delete, display, length, exit
==>create
輸入資料筆數:4
輸入第1筆資料: 1
輸入第2筆資料: 3
輸入第3筆資料: 5
輸入第4筆資料: 7
==>insert
輸入資料:4
要插入於哪筆資料值之後?3
==>display
1 3 4 5 7
==>delete
輸入資料:5
==>length
length=4
==>display
1 3 4 7
==>exit |
|