如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
数据结构【第七次】实验报告学院:班级:学号:姓名:实验七(一)实验名称:线性链表的实现及操作(二)实验目的:1)深入理解线性链表的逻辑结构和链式存储结构;2)掌握线性链表的基本操作及应用:3)培养学生灵活使用结构解决实际问题的能力。(三)实验要求:1)设计一个100位以内的长整数加减运算的程序。要求如下:输入输出要求:每四位一组,组间用逗号分隔;加和减分别用不同的程序实现程序应考虑输入数据的符号2)用循环链表实现约瑟夫环问题源代码:1)100位以内的长整数加减运算的源代码:#include<stdio.h>#include<stdlib.h>#defineLENsizeof(Number)typedefstructnumberNumber;structnumber{intdata;Number*next;Number*prior;};voidmain(){voidDestoryList(Number*);//释放链表voidPutNumber(Number*);//将求得的结果输出Number*GetNumber();//创建链表,放被加数与加数Number*JiaFa(Number*num_1,Number*num_2);//加法函数Number*JianFa(Number*num_1,Number*num_2);//减法函数Number*number_1,*number_2,*number;charch;//存放运算符号printf("Enterthefirstlongnumber:");number_1=GetNumber();printf("put+or-:");ch=getchar();fflush(stdin);//吸收不相关的字符printf("Enterthesecondlongnumber:");number_2=GetNumber();if(ch=='+')number=JiaFa(number_1,number_2);elseif(ch=='-')number=JianFa(number_1,number_2);printf("\n=\n");PutNumber(number);DestoryList(number);DestoryList(number_1);DestoryList(number_2);printf("链表释放完成。\n");}Number*GetNumber()//得到两个链表{Number*p,*q,*List;charch;p=(Number*)malloc(LEN);List=p;List->prior=NULL;List->data=0;//加法时,放最高位进的1,否者999+1=000ch=getchar();while(ch!='\n'){if(ch>='0'&&ch<='9')//过滤非数字字符{q=(Number*)malloc(LEN);q->data=ch-'0';p->next=q;q->prior=p;p=q;}ch=getchar();}p->next=NULL;List->prior=NULL;returnList;}//加法分两种情况长度相同与不同Number*JiaFa(Number*num_1,Number*num_2)//返回的数据为逆序{Number*p,*q,*r,*s,*num=NULL;inti=0,j=0;r=num;p=num_1;while(p->next!=NULL){i++;p=p->next;}//i表示number1数字的长度p指向number节点q=num_2;while(q->next!=NULL){j++;q=q->next;}//j表示number2数字的长度q指向number节点s=(Number*)malloc(LEN);s->prior=NULL;s->next=NULL;num=s;while(i--&&j--){s->data=p->data+q->data;if(s->data>9){s->data-