面试题之陈利人 单链表和之恋
2014-01-08 23:05
134 查看
单链表和之恋
真言
年轻人多听听音乐---周杰伦。给大家推荐一首歌 《单身礼物》,歌手赵凯。
引言
题目已经过去很久,但是我不能放过自己,必须补上。我把自己的电脑屏幕调成黑白的啦,博客也只能看成黑白的啦。建议大家也调成黑白的,保护眼睛。
题目
思路
举个例子说吧,不知你们喜不喜欢图,我很喜欢,形象生动。。。。
实验
代码
test.cpp
#include<iostream> using namespace std; // declare size for list int const size = 30; // define class for list class node { public: int d; node * next; node() { d = 0 ; next = NULL ; } }; // function declare for add list node * Add(node * La,node* Lb); int main() { // list for a and b without head node node *L_a = NULL ,*pa; node *L_b = NULL ,*pb; node * R = NULL ,*pr; for(int i= 0;i<size;i++ ) { pa = new node; pb = new node; pa->d = rand() % 10; pb->d = rand() % 10; pa->next = L_a; L_a = pa; pb->next = L_b; L_b = pb ; } cout<<"La="<<endl; pa = L_a; while (pa) { cout<<pa->d<<" "; pa = pa->next ; } cout<<endl; cout<<"Lb="<<endl; pb = L_b; while(pb) { cout<<pb->d<<" "; pb = pb->next; } cout<<endl; R = Add(L_a,L_b); cout<<"result="<<endl; pr = R; while(pr) { cout<<pr->d<<" "; pr =pr->next; } cout<<endl; system("pause"); return 0; } // function define for add list node * Add(node * La,node* Lb) { if(La == NULL) return Lb; else if(Lb == NULL) return NULL; node * result = NULL; node *pa = La,*pb = Lb,*pr; while(pa && pb) { if((pa->d)<0 || (pa->d)>9 || (pb->d)<0 || (pb->d)>9) { cout<<"exception of input add for list elem"<<endl; return NULL; } pr = new node ; pr->d = pa->d + pb->d; pr->next = result; result = pr; pa = pa->next; pb = pb->next; } pr = result; while(pr && pr->next) { pr->next->d += (pr->d)/10 ; pr->d = (pr->d) %10; pr = pr->next; } // the max bit go forward if((pr->d) >= 10) { node * max = new node; max->d = (pr->d) / 10; pr->d = (pr->d) % 10; max->next = NULL; pr->next = max ; } // reverse the list result pr = result ; node * pnext = NULL ; while(pr && pr->next) { pnext = pr->next; pr -> next = pr->next->next; pnext -> next = result; result = pnext; } while(result) { if(result->d == 0) result = result->next; else break; } return result; }
相关文章推荐
- 剑指offer面试题26-复杂链表的复制
- 链表有关的常见面试题
- 面试题13:在O(1)时间删除链表结点
- 《剑指offer》(面试题13):在O(1)时间删除链表结点
- 剑指offer 面试题5 从尾到头打印链表
- 四道有趣的单链表面试题(单链表反序、找出链表的中间元素、链表排序、判断一个单链表是否有环)
- 面试题27.二叉搜索树与双向链表
- 面试题12 在一个单向链表中 指定一个元素 x 然后将所有小于 x 的元素都放到 x 左边 剩下的元素放到 x 的右边
- 面试题13:在O(1)时间删除链表节点
- 剑指offer 面试题13 在o(1)时间删除链表结点
- 链表常用操作及面试题
- 剑指offer 面试题16 反转链表-Java实现
- 面试题16:反转链表(java)
- 166. 链表倒数第n个节点(nth-to-last-node-in-list)(c++)----lintcode面试题之链表
- 数据结构面试题1.2.1-把二元查找树转变成排序的双向链表
- 372. 在O(1)时间复杂度删除链表节点 (delete-node-in-the-middle-of-singly-linked-list)(c++)----lintcode面试题之链表
- 单链表面试题~带环链表的入口点
- 剑指offer——面试题6:从尾到头打印单向链表
- 面试题 -二元查找树转变成排序的双向链表
- 【剑指offer】面试题15:链表中倒数第k个结点