码迷,mamicode.com
首页 > 其他好文 > 详细

无表头单链表的总结----增加节点(原链表为有序的链表)

时间:2016-12-24 01:35:56      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:有序   若是   strcmp   表头   习惯   log   return   指针   insert   

 1 #include"head.h"
 2 struct Student* insert(struct Student*head, struct Student*addinfo)
 3 {
 4     struct Student *p0, *p1, *p2;  //开辟三个结构体指针
 5     p2=p1 = head;   //头指针赋给p1,p2
 6     p0 = addinfo;  //把 增加信息的指针赋给p0,习惯不用原来指针
 7     if (head == NULL)
 8     {
 9         head = p0  //如果原来链表是空的,直接把新节点赋给头指针
10         p0 ->next = NULL;  //链表结束标志
11     }
12     else
13     {
14         while ((strcmp(p0->nun, p1->nun) > 0) && (p1->next != NULL))//循环终止条件是
15                                  // p0->nun<p1->nun,或者搜到链表最后一个元素了
16         {
17             p2 = p1;
18             p1 = p1->next;    //循环中若,没找到,则指针往后移一位
19         }
20         if ((strcmp(p0->nun, p1->nun) <=0))       //找到插入位置,介于p2~p1之间
21         {
22             if (p1 == head) head =p0;    //若插在第一位,把p0赋给头指针
23             else p2->next = p0;//若是中间,则把p0赋给p2->next
24                 p0->next = p1;        //两种情况后,把    后指针p1赋给p0->next,链接起来
25         }
26         else      //没找到,说明插入的序号最大,只需插在原来链表最后就行
27         {
28             p1->next =p0;//此时p1移到指向最后一个元素
29             p0->next = NULL;
30         }
31     }
32     n++;
33     return head;
34 }

 

无表头单链表的总结----增加节点(原链表为有序的链表)

标签:有序   若是   strcmp   表头   习惯   log   return   指针   insert   

原文地址:http://www.cnblogs.com/xinlovedai/p/6216255.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!