您的位置:首页 > 职场人生

面试题之陈利人 单链表和之恋

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;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题