(2)插入一个结点 例1在递增有序单链表(0,2,5,10)中插入元素4: head-[/[0[2-[5[0∧ q p f 执行: f=( struct lnode米) malloc(LENG);//生成新结点 f->data=4;//装入元素4 f->next=p;/结点5的地址送入结点4的next q->next=f;//结点4的地址送入结点2的next 变为: head-D/子-[o2匚4 10∧ q p
(2) 插入一个结点 例1 在递增有序单链表(0,2,5,10)中插入元素4: head --→ /// --→ 0 --→ 2 --→ 5 --→ 10 ∧ q ↗ ↖ p f --→ 4 执行: f=(struct Lnode *)malloc(LENG); //生成新结点 f->data=4; //装入元素4 f->next=p; //结点5的地址送入结点4的next q->next=f; //结点4的地址送入结点2的next 变为: head-→ /// -→ 0 -→ 2 -→ 4 -→ 5 -→ 10 ∧ q ↗ f ↗ p ↗
例2输入一列整数,以0为结束标志,生成递增有序单 链表。(不包括0) /1/ 4 10 head位位o7
例2 输入一列整数,以0为结束标志,生成递增有序单 链表。(不包括0) ///// 1 4 7 10 17 ^ 1 4 7 10 17 ^ head head
e为新元(插入算法) 素值 NULL少q new(fe→f> data NULL→f->next head→p P--NU p =NULL&& 假 真 不带头结点算法 假 p-data 真 thead=NULL 真 假 真 假 p-next→p ① head→q≥ next p÷f> next>->next ①空表插入; f>head q→ E>next ②尾部插入 ③首部插入; (返回head ④一般插入
p!=NULL&& e>p->data 真 假 插入算法 返回head head➔p p➔q p->next➔p NULL➔q new(f) e➔f->data p==NULL head==NULL p==head 假 真 f➔head f➔q->next NULL➔f->next f➔q->next q➔f->next p➔f->next f➔head 假 假 真 真 ① ② ③ ④ ① 空表插入; ② 尾部插入; ③ 首部插入; ④ 一般插入。 e为新元 素值 不 带 头 结 点 算 法