已知一个有序单链表(从小到大排列),表头指针为head,编写一个函数向该单链表中插入一个元素为x的节点,使插入后该单链表仍有序。

admin2014-12-25  34

问题 已知一个有序单链表(从小到大排列),表头指针为head,编写一个函数向该单链表中插入一个元素为x的节点,使插入后该单链表仍有序。

选项

答案本题的算法思想:先建立一个待插入的结点,然后依次与链表中的各结点的数据域比较大小,找到插入该结点的位置,最后插入该结点。实现本题功能的函数如下: node*insert(node*head,int x) {node*s,*p,*q; s=(node*)malloc(sizeof(node));/*建立一个待插入的结点*/ s一>data=x; s一>next=NULL; if(head==NULL||xdata)/*若单链表为空或x小于第一个结点的data域*/ { s一>next=head; /*把s结点插入到表头后面*/ head=s; } else { q=head; /*为s寻找插入位置,p为待比较的结点,q为p的前趋结点*/ p=A一>head while(p!=NULL&&x>p一>data)/*若x小于p所指结点的data域值*/ /*则退出while循环*/ if(x>p一>data) ( q=p; p=p一>next; } s一>next=p; /*将s结点插入到q和p之间*/ A一>next=s; } }

解析
转载请注明原文地址:https://kaotiyun.com/show/giVx777K
0

最新回复(0)