(1)用数组a[n]和b[n]表示两个n位正整数(也可以小于n位),设计一个算法,求他们的和,和放在数组c[n]中,最高位溢出是,舍去之,有溢出时,返回1,否则返回0。
#include <stdio.h>
int main()
{
int a[n] //初始化略
int b[n] //初始化略
int c[n]//c[n]每一位初值都为0
int tmp=0;
for(int i=n-1;i>=0;i--)
{
tmp=a[i]+b[i]+c[i];
c[i]=tmp%10 ;
if(tmp>10 )
{
c[i-1]++;
}
}
if(tmp>10)
{
return 1;
}
return 0;
}
(2)一个带头结点的双向链表La,设计一个算法将链表逆转。例如
算法思想:将第二个结点插入在头结点和第一个结点之间,然后再将第三个结点插入在头结点和第一个结点之间。。。。
typedef struct Node
{
int data ;
struct Node * pre;
Struct Node * next;
}Node,*pNode;
pNode reverse(pNode La)
{
pNode p=La->next;
pNode q=p->next;
while(q->next!=NULL)
{
p->next=q->next;
q->next->pre=p;
/* 下面的四部是将q插入 La和p之间*/
q->next=p;
q->pre=La;
La->next=q;
p->pre=q ;
//q始终指向p的下一个
q=p->next;
}
return La;
}