设顺序表L中数组元素递增有序,写一算法,将X插入到顺序表的适当位置
来源:百度知道 编辑:UC知道 时间:2024/05/18 02:33:22
void insert(NODE **phead ,int data)
{
NODE *p1=*phead,*p2=NULL,*p;
while(p1 !=NULL)
{
if(data<=p1->x)
{
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