数据结构与算法面试题80道(24)
2016-03-13 14:21
471 查看
第24题:
链表操作,
(1).单链表就地逆置,
(2)合并链表
链表操作,
(1).单链表就地逆置,
(2)合并链表
#include<stdio.h> struct node{ int data; node* next; }; //就地逆转 node * reverseLink(node* head){ node *p,*r; p=head->next; head->next=NULL; while(p){ r=p->next; p->next=head->next; head->next=p; p=r; } return head; } //合并链表 node* mergeLink(node *a,node *b){ node *head,*p; head=a; a=a->next; b=b->next; p=head; while(a&&b){ if(a->data>b->data){ p->next=b; p=p->next; b=b->next; }else{ p->next=a; p=p->next; a=a->next; } } while(a){ p->next=a; p=p->next; a=a->next; } while(b){ p->next=b; p=p->next; b=b->next; } return head; } //打印链表 void printfLink(node *l){ node *p=l->next; while(p!=NULL){ printf("%d\t",p->data); p=p->next; } printf("\n"); } //创建链表, node* creatLink(){ node *l=new node(); node *r=l; int x; printf("请输入链表,ctrl+z结束输入\n"); while(~scanf("%d",&x)){ node* p=new node(); p->data=x; p->next=NULL; r->next=p; r=r->next; } return l; } int main(){//test node *a=NULL; a=creatLink(); printfLink(a); node *b=NULL; b=creatLink(); printfLink(b); node *c=NULL; c=mergeLink(a,b); printfLink(c); reverseLink(c); printfLink(c); return 0; }
相关文章推荐
- 数据结构与算法面试题80道(23)
- 数据结构与算法面试题80道(22)
- 数据结构与算法面试题80道(21)
- 单链表的模板类实现
- 数据结构(3)线性表之顺序表C++实现
- MySQL索引背后的数据结构及算法
- C语言数据结构:单向链表
- 数据结构二叉树知识点总结
- 《数据结构与算法分析C++描述(第3版)》第三章List容器可编译运行版
- 数据结构与算法学习(一)
- 数据结构课设
- 数据结构2.1线性表的线性表示和实现
- 数据结构(2)线性表之顺序表
- 【数据结构与算法】(四) c 语言静态队列的简单实现
- 编程之久除了算法和数据结构,什么也不属于我们。
- 数据结构和算法(01)之综述
- 数据结构与算法系列----基数排序
- JAVA数据结构---顺序表
- JAVA数据结构---顺序表
- JAVA数据结构---顺序表