《c语言.链表.学习笔记》由会员分享,可在线阅读,更多相关《c语言.链表.学习笔记(4页珍藏版)》请在金锄头文库上搜索。
1、C 语言.链表.学习笔记链表的插入节点的小程序,其原理与删除节点的差不多。都是首先要找到欲处理的节点。插入节点的情况有 3 种,即所谓的头节点,尾节点和中间节点。1.头节点的处理:将节点插入在链表第一个元素前面,只要将新建立的节点指针指向链表的第一个节点就可以了。2.尾节点的处理:将节点插入在链表的最后一个元素后面,将尾节点的指针指向新建立的节点,然后将新建立的节点指向 NULL 位置。3.中间节点的处理:将节点插入在链表中间的任意位置,比如有 p,q2 个节点(p 在前),则需将新建立的节点指向 q,将 p 指向新建立的节点。在下面的程序中还用到了冒泡排序法。不要小瞧这个冒泡排序哦。据说 G
2、OOGLE 的笔试题中一个冒泡就能让 60%的人回家。好了,下面贴出程序。#include#includestruct list/定义链表的结构,方法很固定,熟记int data;struct list *next;typedef struct list node;typedef node *link;link create_list(int array,int num)/创建链表,以数组和元素个数作为形参变量link tmp1,tmp2,pointer;/pointer 指针始终指向该链表,tmp1 和 tmp2 指针用来将数组元素输入到节点中int i;pointer=(link)mall
3、oc(sizeof(node);/首先分配地址空间pointer-data=array0;/输入第一个元素tmp1=pointer;for(i=1;inext=NULL;tmp2-data=arrayi;tmp1-next=tmp2;tmp1=tmp2;return pointer;void bubble_sort(link pointer,int num)/给出链表指针和节点个数,可以用冒泡算法进行排序link tmp;int i,j,k;for(i=1;idatatmp-next-data)k=tmp-data;tmp-data=tmp-next-data;tmp-next-data=k;
4、tmp=tmp-next;void print_list(link pointer)while(pointer)printf(“2: %dn“,pointer-data);pointer=pointer-next;link insert_node(link pointer,link btmp,int value)link newnode;if(btmp=NULL)/此为头节点前需要插入元素的情况newnode=(link)malloc(sizeof(node);newnode-data=value;newnode-next=pointer;return newnode;elseif(btmp-
5、next=NULL)/此为尾节点后需要加入的元素的情况newnode=(link)malloc(sizeof(node);newnode-data=value;btmp-next=newnode;newnode-next=NULL;else/此为在链表中间需要加入元素的情况newnode=(link)malloc(sizeof(node);newnode-data=value;newnode-next=btmp-next;/注意下面这两句的先后顺序,要先指明新节点的后续节点。btmp-next=newnode;return pointer;/返回链表头指针link search_insert_
6、location(link pointer,int value)link tmp,btmp;int OTRUE=1;tmp=pointer;btmp=NULL;while(tmpif(OTRUE)btmp=tmp;tmp=tmp-next;pointer=insert_node(pointer,btmp,value);return pointer;void main()int arr=3,12,8,9,11;link ptr;ptr=create_list(arr,5);bubble_sort(ptr,5);printf(“1:Print before insert node.n“);print_list(ptr);ptr=search_insert_location(ptr,15);printf(“1:Print after insert node 15n“);print_list(ptr);ptr=search_insert_location(ptr,7);printf(“1:Print after insert node 7n“);print_list(ptr);来自: http:/