假设单链表数据元素类型为整型,完成带头结点的有序单链表(非递减)插入算法
typedef int Elemtype;//定义类型 typedef struct LNode{ ELemtype data;//存放数据元素 struct LNode *next;//存放下一个元素地址 }LNode,*LinkList;//LNode为结点型,LinkList为指针型 int ListINsert(LinkList &L,Elemtype e)//L为头指针,要插入的元素为e相当于形参 { LinkList p=L->next;//p为头结点,LinkList p等同于LNode *p LinkList s=new LNode;//定义一个新节点用于存放要插入的元素; s->data=e; if(!p->next) //链表为空时 { p->next-s;//直接将要插入的元素(本身就是非递减)插到表尾 return OK; } while(p) { if(p-next&&p->next->data<=e) p=p->next;//p的下一个结点的data比e小,故e不能插入p后面,p后移; else{ s->next=p->next; p->next=s;//注意这两句顺序 return ok;//插入成功 } } }