有序表的生成与插入

来源:百度知道 编辑:UC知道 时间:2024/06/03 16:21:54
#include<stdio.h>
#include<conio.h>
class NODE
{
friend class LIST;//申明友元类
private:
NODE*NEXT;//下一个邻节点连接
int DATA;//当前节点的数据信息
};
class LIST
{
private:
NODE*HEAD;//链表头
public:
LIST()//构造函数
{
HEAD=0;
}
NODE*GETHEAD();
void DISPLAY(NODE*TEMP);
void INSERT(int Data);
void CLEAR();
~LIST()
{
CLEAR();
}
};
NODE*LIST::GETHEAD()
{
return(HEAD);
}
void LIST::DISPLAY(NODE*TEMP)
{
if(HEAD==0)
{
printf("空的");
}
else
{
while(TEMP!=0)
{
printf("%d",TEMP->DATA);
TEMP=TEMP->NEXT;
}
}
}
void LIST::INSERT(int Data)
{
NODE*TEMP=HEAD;
NODE*PREVIOUS;
NODE*NEWNODE;
NEWNODE=new NODE;
NEWNODE->DATA=Data;
NEWNODE->NEXT=0;
if(HEAD==0)
{

呵呵,一点小错误,这么改:
while((TEMP->DATA<=Data)&&(TEMP!=0))
改为:
while((TEMP!=0)&&(TEMP->DATA<=Data))

你的想法很好,
判断TEMP!=0防止空指针出现,
但是注意,&&判断是从左向右的,
所以当TEMP为空时,先判断的是TEMP->DATA<=Data,出现了空指针引用错误,
所以需要先判断指针是否为空,
所以需要将TEMP!=0的判断写在前面