直接贴代码,看注释:
#include <stdio.h>
#include <stdlib.h>
// 最大一百位数的加减法实现
const int MAXSIZE = 100;
typedef struct {
int length; //长度
int numbers[MAXSIZE]; //各个位上的数字,从低位数字到高位数字
int sign; //符号:0代表正数,1代表负数,规定0的符号为正
}SqList;
//头插,即新元素插入到numbers[0]
void insert(SqList *l, int x)
{
SqList *p = l;
if(l->length<MAXSIZE){
int i;
//所有后移
for(i=l->length-1;i>=0;i--){
l->numbers[i+1]=l->numbers[i];
}
l->numbers[0] = x;
l->length++;
}
}
//初始化: s:符号,0正1负;a:包含从高位到低位各个位数的数组;n:位数,也即数组a的长度
SqList *init(int s, int *a, int n)
{
SqList *L;
L=(SqList*)malloc(sizeof(SqList));
if(!L)
{
printf("Init Error!");
exit(1);
}
L->sign=s;
L->length=0;
int i;
for(i=0;i<n;i++){
insert(L,a[i]);
}