欢迎来到天天文库
浏览记录
ID:37921828
大小:28.00 KB
页数:4页
时间:2019-06-02
《C语言.链表.学习笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言.链表.学习笔记链表的插入节点的小程序,其原理与删除节点的差不多。都是首先要找到欲处理的节点。插入节点的情况有3种,即所谓的头节点,尾节点和中间节点。1.头节点的处理:将节点插入在链表第一个元素前面,只要将新建立的节点指针指向链表的第一个节点就可以了。2.尾节点的处理:将节点插入在链表的最后一个元素后面,将尾节点的指针指向新建立的节点,然后将新建立的节点指向NULL位置。3.中间节点的处理:将节点插入在链表中间的任意位置,比如有p,q2个节点(p在前),则需将新建立的节点指向q,将p指向新建立的节点。在下面的程序中还用到了冒泡排序法。不
2、要小瞧这个冒泡排序哦。据说GOOGLE的笔试题中一个冒泡就能让60%的人回家。好了,下面贴出程序。#include#includestructlist//定义链表的结构,方法很固定,熟记{intdata;structlist*next;};typedefstructlistnode;typedefnode*link;link create_list(intarray[],intnum)//创建链表,以数组和元素个数作为形参变量{linktmp1,tmp2,pointer;//pointer指针始终指向该
3、链表,tmp1和tmp2指针用来将数组元素输入到节点中inti;pointer=(link)malloc(sizeof(node));//首先分配地址空间pointer->data=array[0];//输入第一个元素tmp1=pointer;for(i=1;inext=NULL; tmp2->data=array[i]; tmp1->next=tmp2; tmp1=tmp2;}returnpointer;}voidbubble_so
4、rt(linkpointer,intnum)//给出链表指针和节点个数,可以用冒泡算法进行排序{linktmp;inti,j,k;for(i=1;idata>tmp->next->data) { k=tmp->data; tmp->data=tmp->next->data; tmp->next->data=k; } tmp=tm
5、p->next; }}}voidprint_list(linkpointer){while(pointer){ printf("2:%d",pointer->data); pointer=pointer->next;}}linkinsert_node(linkpointer,linkbtmp,intvalue){linknewnode;if(btmp==NULL)//此为头节点前需要插入元素的情况{ newnode=(link)malloc(sizeof(node)); newnode->data=value; newnod
6、e->next=pointer; returnnewnode;}else{ if(btmp->next==NULL)//此为尾节点后需要加入的元素的情况 { newnode=(link)malloc(sizeof(node)); newnode->data=value; btmp->next=newnode; newnode->next=NULL; } else//此为在链表中间需要加入元素的情况 { newnode=(link)malloc(sizeof(node)); newnode->data=val
7、ue; newnode->next=btmp->next;//注意下面这两句的先后顺序,要先指明新节点的后续节点。 btmp->next=newnode; } returnpointer;//返回链表头指针}}linksearch_insert_location(linkpointer,intvalue){linktmp,btmp;intOTRUE=1;tmp=pointer;btmp=NULL;while(tmp&&OTRUE){ if(valuedata) { OTRUE=0; } if(OTRUE)
8、 { btmp=tmp; tmp=tmp->next; }}pointer=insert_node(pointer,btmp,value);returnp
此文档下载收益归作者所有