void insert(NODE **phead ,int data)
{
NODE *p1=*phead,*p2=NULL,*p;
while(p1 !=NULL)
{
if(datax)
{
p=(NODE *)malloc(sizeof(struct node));
p->x=data;
p->next=p1;
if( 1 p2==NULL ) /*若插入的节点将成为头节点*/
( 2 *phead )=p;//将头节点指针指向当前节点
else // 如果不是头节点,直接将p1前的一个节点也就是p2所在的节点和当前插入节点连接
p2->next=p;
break; // 跳出循环,插入已经完成,函数会马上返回。
}
// 可能要添加以下两行代码才会工作正常
p2 = p1;
p1 = p2->next;
}
if(p1==NULL) // 如果没有头节点直接添加
{
p=(NODE*),alloc(sizeof(struct node));
p->x=data;
p->next=( 3 NUll ); // 设置头节点的后向指针
if( 4 p2==NUll )/* 若插入的节点将成为头节点*/
( 5 *phead )=p;
else // 以下代码根本就是多余的
p2->next=p;
}
}。
全部