【程序员面试宝典】数据结构基础二单链表循环链表的操作 建立|插入删除|打印|合并
2011-08-26 15:55
1006 查看
#include<stdio.h> #include<stdlib.h> typedef struct dlinks { int data; struct dlinks *pre; struct dlinks *next; }dnode; dnode *Create() { dnode *head=(dnode*)malloc(sizeof(dnode)); head->pre=NULL; dnode *s,*p=head; int data,cycle=1; while(cycle) { scanf("%d",&data); if(data) { s=(dnode*)malloc(sizeof(dnode)); s->data=data; p->next=s; s->pre=p; s->next=NULL; p=p->next; } else cycle=0; } return head; } void PRINT(dnode *link) { dnode *p=link->next; while(p) { printf(" %d ",p->data); p=p->next; } printf("\n"); } dnode *insert(dnode *link,int data,int n) { dnode *p=link; int i=0; while(i<n-1&&p!=NULL) { p=p->next; i++; } dnode *s=(dnode *)malloc(sizeof(dnode)); s->data=data; s->next=p->next; s->pre=p; p->next=s; return link; } dnode *deletenode(dnode *link,int n) { dnode *p=link; int i=0; while(i<n-1&&p!=NULL) { i++; p=p->next; } dnode *s=p->next; s->next->pre=p; p->next=s->next; free(s); return link; } dnode* MergeLinks(dnode *Linka,dnode *Linkb) { dnode *p=Linka->next; dnode *q=Linkb->next; dnode *Linkc=Linka; dnode *s=Linkc; s->pre=NULL; while(p&&q) { if(p->data<q->data) { s->next=p; p->pre=s; p=p->next; } else { s->next=q; q->pre=s; q=q->next; } s=s->next; } if(p) { s->next=p;p->pre=s; } if(q) { s->next=q;q->pre=s; } return Linkc; } int main() { // dnode *dlinklist; // dlinklist=Create(); // dlinklist=insert(dlinklist,9,3); // PRINT(dlinklist); // dlinklist=deletenode(dlinklist,5); // PRINT(dlinklist); dnode *link1=Create(); PRINT(link1); dnode *link2=Create(); PRINT(link2); dnode *link3=MergeLinks(link1,link2); PRINT(link3); return 0; }
相关文章推荐
- 【程序员面试宝典】数据结构基础一单链表:创建|求长|插入|删除|排序|打印|逆置
- 数据结构——单链表的创建、逆置、插入、有序表的建立、有序单链表合并等基础操作!!
- 程序员面试宝典之数据结构基础----⑥双链表的建立,插入和删除
- C++ 数据结构的单链表的建立,插入,删除操作
- 数据结构作业代码保存-2.1 单向循环链表的建立,插入和删除,和指针移动
- 数据结构之循环链表操作3-(合并,拆分,插入,删除,建立等)
- 数据结构:头插法、尾插法创建单链表,求链表长度、查找、插入、删除、合并
- 链表的基本操作,建立,测长,删除,打印,插入
- 数据结构基础5.4:堆(HEAP)的基本操作(插入与删除)
- c++实现双向链表的建立,插入,删除,合并,打印
- 数据结构(线性表的操作:建立表,插入元素,删除元素,取元素,置空)
- 链表基本操作(建立、修改,插入、删除、打印)
- 单链表的建立,查找,插入,删除,测长,打印,逆置操作实现
- 关于链表结构的基本操作 c 实现 (创建,插入删除,反转,合并链表,查找,是否有环,链表相交情况)
- 数据结构基础5.2:二叉搜索树(BST)的基本操作(插入、查找、删除)
- 【数据结构】顺序表、单链表、循环链表的插入与删除
- 算法学习-数据结构之链表操作,创建,插入,删除,查找。
- C/C++,数据结构实现两个链表的合并(尾插法建立单链表,求链表长度,直接插入排序)
- 程序员面试宝典_链表基本操作,建立,求长,删除和插入特定值的结点
- C/C++,数据结构实现两个链表的合并(尾插法建立单链表,求链表长度,直接插入排序)