• 大小: 19KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: codeblocks  

资源简介

[ 问题描述 ] 设计程序实现两个任意长整数的求和运算。 [ 基本要求 ] 《数据结构》题集 利用双向循环链表实现长整数的存储, 每个结点含一个整型变量. 任何整型变量的范围是 -(215-1)~(215-1)。输入和输出形式: 按中国对于长整数的表示习惯, 每四位一组,组间用逗号隔开。 [ 测试数据 ] (1) 0;0;应输出"0"。 (2) -2345,6789;-7654,3211; 应输出"-1,0000,0000"。 (3) -9999,9999; 1,0000,0000,0000; 应输出"9999,0000,0001"。 (4) 1,0001,0001; -1,0001,0001; 应输出"0"。 (5) 1,0001,0001; -1,0001,0000; 应输出"1"。 [ 实现提示 ] (1) 每个结点可以存放的最大整数为 215-1 = 32767 才能保证两数相加不会溢出。但若这样存,即相当于按 32768 进制数存,在十进制数与 32768 进制数间的转换十分不方便,故可以在每个结点中仅存十进制数的 4 位,即不超过 9999的非负整数, 整个链表被视为万进制。 (2)可以利用头结点数据域的符号代表长整数的符号。 用其绝对值表示元素结点数目。相加过程中不要破坏两个操作数链表。两操作数的头指针存于指针数组中是简化程序结构的一种方法。不能给长整数位数规定上限。 [ 选作内容 ] 修改上述程序,使它在整型量范围是-(2n-1)~(2n-1) 的计算机上都能有效地运行。其中 n 是由程序读入的参量。输入数据的分组方法可另行规定。

资源截图

代码片段和文件信息

#include 
#include
#include
#include

#define OK 1
#define ERROR 0
#define OVERFLOW -1

typedef int status;
typedef struct DuCirNode{
    int data;
    struct DuCirNode *prior;
    struct DuCirNode *next;
    int len;
}DuCirNode *DulinkList;

status createlink(DulinkList *L)
{
    if(!(*L=(DulinkList)malloc(sizeof(DuCirNode)))) return OVERFLOW;
        (*L)->next=*L;
    (*L)->prior=*L;
    (*L)->len=0;
    return OK;
}

/*插入结点*/
status insertNode(DulinkList *L  int data)
{
    DulinkList p;
    if(!(p = (DulinkList)malloc(sizeof(DuCirNode)))) return OVERFLOW; /*生成新结点*/
    p->data=data;
    p->next=(*L)->next;
    (*L)->next->prior=p;
    (*L)->next=p;
    p->prior=*L;
    (*L)->len++;
    return OK;
}

/*deleteNode(*L);*/
status deleteFirst(DulinkList *L)
{
    DulinkList p;
    if((*L)->len==1)
        return 0;
    p=(*L)->next;
    (*L)->next=p->next;;
    free(p);
    (*L)->len--;
    return OK;

}

void DestroyList(DulinkList *L){
    DulinkList *q;
    while(L){
        q=L;
        L=(*L)->next;
        free(q);
    }
}


status input(DulinkList *L){
    int i=0t=0k;
    /*int len=0;*/
    int j=0sum=0c=0;
    char *sx;
    s=(char *)malloc(100*sizeof(char ));
    s[0]=‘0‘;
    /*scanf(“%c“&x);*/
    x=getchar();
    while(x!=‘\n‘&&x!=‘ ‘){
        if(x!=‘‘){
            i++;
            t=i-1;
        }
        if(i==1){
            if(x>=‘0‘ && x<=‘9‘){
                (*L)->data=1;
                s[i]=x;
            }
            else if(x==‘-‘){
                    (*L)->data=-1;
                    s[t]=‘-‘;
                }
                else if(x==‘+‘){
                        (*L)->data=1;
                        s[t]=‘+‘;
                }
                /*else if(x==‘0‘){
                insertNode(L0);
                return OK;}*/
                //else ;
        }
        else{
            if(x>=‘0‘ && x<=‘9‘){
                if(s[0]==‘0‘)
                    s[i]=x;
                else
                    s[t]=x;

            }
        }
        /* scanf(“%c“&x);*/
        x=getchar();
    }
    /* getchar();*/
    if(s[0]==‘0‘)
        s[++i]=‘\0‘;
    else
        s[i]=‘\0‘;
    /*s[++i]=‘\0‘;*/
    for(i=strlen(s)-1;i>0;i--){
        if(s[1]==‘0‘){
            insertNode(L0);
            return OK;
        }
        j=j%4;
        c=s[i]-‘0‘;
        for(k=0;k            c*=10;
        sum=sum+c;
        j++;
        if(j==4){
            insertNode(Lsum);sum=0;
        }
        /* j++;*/
    }
    /*j--;*/
    if(j<4 /*&& j>=0*/)insertNode(Lsum);

    return OK;
}


status add(DulinkList L1 DulinkList L2 DulinkList *result)
{
    DulinkList p1p2q1q2;
    int resDatat*jinwei*jieweii=1;
    jinwei=(int *)malloc(100*sizeof(int));
    jiewei=(int *)malloc(100*sizeof(int));
    p1=L1->prior;
    p2=L2->prior

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-04-06 10:40  长整数运算\
     目录           0  2019-03-31 00:10  长整数运算\bin\
     目录           0  2019-03-31 10:55  长整数运算\bin\Debug\
     文件       34844  2019-03-31 10:55  长整数运算\bin\Debug\长整数运算.exe
     文件        9838  2019-03-31 10:55  长整数运算\main.c
     目录           0  2019-03-31 00:10  长整数运算\obj\
     目录           0  2019-03-31 10:55  长整数运算\obj\Debug\
     文件        7817  2019-03-31 10:55  长整数运算\obj\Debug\main.o
     文件        1134  2019-03-31 00:10  长整数运算\长整数运算.cbp
     文件         145  2019-03-31 10:52  长整数运算\长整数运算.depend
     文件         359  2019-04-06 10:40  长整数运算\长整数运算.layout

评论

共有 条评论