欢迎来到天天文库
浏览记录
ID:6690013
大小:27.00 KB
页数:7页
时间:2018-01-22
《[计算机类论文精品]c语言数据结构双链表源代码》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、c语言数据结构双链表源代码/******************************************************************************双链表的创建。此双链表要求为带头节点的,为了算法方便特采用了循环双链表。通过编程发现带头节点的也有其不便之处。为了保持表的一直有序性思考如下:1:表的一开始的创建就要有序。2:插入元素后要做到仍然有序。3:删除元素不会改变表的有序性4:所谓有序,即为非降序或者非升序排列。5:为了做到以上几点,考虑到链表的不易排序性质,特设置一个线性表作为输入缓存空间进行事先排序。关
2、于排序的方法有多种,为了快速完成采用了较为简单的插入排序。copyright:yywill帖请注明,做人要厚道******************************************************************************/#includetypedefstructLNode{ int data; struct LNode *next; struct LNode *prior;}*Link,Position;typedefstructList_Struct{/*头节
3、点*/ Linkhead,tail; intlen; intvalue;/*0表示升序/非降序排列,1表示降序/非升序排列*/}LinkList,*List;/*****************************************************************************/MakeNode(Linkp,Listl,inte){/*创建节点*/ ListInitList(); p->data=e; l->tail=p;/*此函数只设置尾节点,因为头节点只要设置一次*/}/******
4、***********************************************************************/ListInitList(){ /*初始化建立双链表*/ LinkList*l; l=(LinkList*)malloc(sizeof(LinkList)); l->len=0; l->head=l->tail;/*当头节点和尾节点指向同一地址时候表示为空表*/ returnl;}/************************************************
5、*****************************/CreateList(intn,Listl,int*e){ /*1.建立一个有序的带表头结点的双链表*/ /*n为元素个数*/inti,elem;Position*p1,*p2;Sort(n,e);p1=(Position*)malloc(sizeof(Position));elem=e[1];MakeNode(p1,l,elem);/*第一个节点*/p1->next=p1;p1->prior=p1;l->head=p1
6、;l->len=1; if(n==0)return;/*如果链表只有一个项则不用执行下面的函数,直接退出*/ for(i=2;i<=n;i++){ p2=(Position*)malloc(sizeof(Position)); elem=e[i]; MakeNode(p2,l,elem); (l->len)++;/*表长度计数,每循环一次加一*/ p1->next=p2;p2->next=l->head; l->head->prior=p2;p2->prior
7、=p1;p1=p2; }l->value=1;/*默认为非升序创建*/}/*****************************************************************************/ListTraverse(Listl){ /*遍历链表*/inti=0;Linkp;p=l->head;printf("("); for(;ilen;i++){ printf("%d,",p->data); p=p->next ; }printf(")");}/************
8、*****************************************************************/Co
此文档下载收益归作者所有