谁能帮我看一下这个链表程序的毛病在哪里
我这个题目是对带头链表进行基本操作
但是我的输出有很大问题
哪位达人帮我看看
我的程序编译通过
就是结果不是想象的
我是每进行一次基本操作就显示一下链表里的数据
请大家指教
#include<stdio.h>
struct NODE
{ int data;
struct NODE *next;
};
struct NODE *head,*tail,*work,*new;
set_null()
{head=(struct NODE *)malloc(sizeof(struct NODE));
head->next=NULL;
tail=head;
}
/*struct NODE *locate(data)
int data;
{ work=head;
while(work->data!=data)
work=work->next;
if(work->data==data)
return(work);
else
return(NULL);
}*/
Insert(data,predata)
int data,predata;
{struct NODE *work;
work=head->next;
while(work->data!=predata && work!=NULL)
work=work->next;
new=(struct NODE*)malloc(sizeof(struct NODE));
new->data=data;
if(work==NULL)
{ new->next=NULL;
work->next=new;
tail=new;
}
else
{ new->next=work->next;
work->next=new;}
}
delete(data)
int data;
{
struct NODE *work1;
work=head;
while(work->data!=data && work!=NULL)
work=work->next;
work1=head;
while(work1->next!=work)
work1=work1->next;
work1->next=work->next;
free(work);
if(work==tail)
{
tail=work1;
}
}
display()
{
struct NODE *p;
p=head->next;
do
{
p=p->next;
printf("\n%d",p->data);
}while(p->next!=NULL);
}
main()
{
set_null() ;
Insert(5,2);
display();
Insert(7,5);
display();
Insert(8,5);
display();
delete(7);
display();
getch();
}
问题点数:40、回复次数:8Top
1 楼carbon107(<软件开发思想.h>)回复于 2003-11-04 18:57:39 得分 2
你的程序能编译通过吗,好像不是啊Top
2 楼carbon107(<软件开发思想.h>)回复于 2003-11-04 19:00:52 得分 2
错误多多啊,要不我给你做一个啊,说真的你的程序有问题,有什么问题找我吧
qq:373965Top
3 楼iceandfire(【咖啡沫】)回复于 2003-11-04 19:23:55 得分 2
本来想帮你改改,可从结构上看就很混乱,还不如给你写一个呢~~~哎~~~要从基本功练起啊Top
4 楼yuanzhanliu(远湛)回复于 2003-11-04 19:35:04 得分 2
new 就不行啊Top
5 楼kongqz(欢乐时光)回复于 2003-11-04 22:14:52 得分 0
编译确实通过了
但是结果就是显示了插入后的结果
删不掉指定数据
并且我单步追踪都可以通过
唉Top
6 楼teddyzhai(我是猪)回复于 2003-11-04 23:07:59 得分 2
好象不能编译吧!
我觉得头文件都不对啊!!有malloc应该有<STDLIB.H>啊
!!!Top
7 楼hf811124(疯子)回复于 2003-11-05 09:16:50 得分 12
/*struct NODE *locate(data)
int data;
{ work=head; head 没有定义啊,是什么啊
while(work->data!=data)
work=work->next;
if(work->data==data)
return(work);
else
return(NULL);
}*/
Top
8 楼Angeleque(小烟)回复于 2003-11-05 10:07:01 得分 18
int Delete(int data)
{struct NODE *pTop,*pLast;
int Ok;
Ok = FALSE;
pTop =head;
pLast = head;
while(pTop)
{if(data==pTop->data)
{Ok = TRUE;
break;
}
pLast = pTop;
pTop = pTop->Next;
}
if (Ok)
{if(pTop == head)
pHead = head->Next;
else if(pTop)
pLast->Next = pTop->Next;
else if(pTop==NULL)
pLast->Next = NULL;
if(pTop) free(pTop);
}
else
return FALSE;
return TRUE;
}
Top




