线性链表的实现及操作_第1页
线性链表的实现及操作_第2页
线性链表的实现及操作_第3页
线性链表的实现及操作_第4页
线性链表的实现及操作_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

- 学生姓名学生班级学生** 指导教师 -1、设计一个100位以内的长整数加减运算的程序。要求如下:输入输出要求:每四位一组,组间用逗号分隔;加和减分别用不同的程序实现程序应考虑输入数据的符号2、用循环链表实现约瑟夫环问题数与被减数的长短关。Number*GetNumber(){Number*p,*q,*List;p=(Number*)malloc(LEN);stpList->prior=NULL;List->data=0;{{-locLENhetq}}tNULLiorNULList}NumberJiaFa(Number*num_1,Number*num_2)//返回的数据为逆序{Numberp*q,*r,*s,*num=NULL;p=num_1;while(p->ne*t!=NULL){pnet}q=num_2;while(q->ne*t!=NULL){q=q->ne*t;}s=(Number*)malloc(LEN);s->prior=NULL;//i表示number1数字的长度//j表示number2数字的长度-while(i--&&j--){{ppriordataa}mbermallocLENrsrior}prior{while(i--){{pdatappriordata}点-riors}{s}}{while(j--){{a}s}{-s}}um}ne*t置空NumberJianFa(Number*num_1,Number*num_2)//返回的数据也为逆序{Numberp*q,*r,*s,*num=NULL;p=num_1;while(p->ne*t!=NULL){p=p->ne*t;}q=num_2;while(q->ne*t!=NULL){q=q->ne*t;}s=(Number*)malloc(LEN);s->prior=NULL;s->ne*t=NULL;num=s;数的,用减数减去被减数,最后反号{while(i--){s->data=q->data-p->data;if(s->data<0){//i表示number1数字的长度//j表示number2数字的长度//对于被减数长度小于减-q->prior->data--;}bermallocLENrsriorj--;}priorwhile(j--){{q->prior->data--;}s}}{umqnumwhilep>data==q->data){pnet}mNumbermallocLENriorNULL点-mdatamnetpumNumbermallocLENriorNULLmdatamnetqwhile(p->ne*t!=NULL){ppnet;}while(q->ne*t!=NULL){}atanumnetdata{while(i--){ata{p->prior->data--;}rNumbermallocLEN);iorspprior}r=s=s->prior;//去掉最后一个没数据的节点free(s->ne*t);while(s->data==0&&s->prior!=NU去)掉前面多余的0,1{s=s->prior;free(s->ne*t);-}}tdata{while(i--){{q->prior->data--;}mbermallocLENrsrior}r=s=s->prior;//去掉最后一个没数据的节点free(s->ne*t);while(s->data==0&&s->prior!=NU去)掉前面多余的0,1{s=s->prior;free(s->ne*t);}}s->data=0-s->data;能放符号,而直接在最高位前加负号最简单s->ne*t=NULL;}{while(j--){s->data=p->data-q->data;if(s->data<0){s->data+=10;}//反号,因为节点里不-mbermallocLENrsriori--;}rssprior//去掉最后一个没数据的节点while(i--){{datap->prior->data--;}riors}while(s->data==0&&s->prior!=NULL)//去掉前面多余的0,否{s=s->prior;free(s->ne*t);}//s->data=0-s->data;//反号,因为节点里不能放符号,而直接在最高位前加负号最简单s->ne*t=NULL;}returnnum;}4.链表的合并voidPutNumber(Number*num)/表的合并{Number*p;-while(p->ne*t!=NULL){pnet}while(k--){printfdpdata);rior完后不输出','}}遇到的问题及解决方法hhzeofNumber{Numbernet-Numberprior;{dDestoryListNumberdPutNumberNumberNumberGetNumber();数NumberJiaFa(Number*num_1,Number*num_2);//加法函数Number*JianFa(Number*num_1,Number*num_2);//减法函数Numbernumber_1,*number_2,*number;charch//存放运算符号printfEnterthefirstlongnumbern);berGetNumberprintf("put+or-:\n");fflush(stdin);//吸收不相关的字符printfEnterthesecondlongnumbern);erGetNumbernumberJiaFanumbernumber2);numberJianFanumbernumber2);ntfnmbernumberoryListnumberDestoryList(number_1);DestoryListnumber2);}NumberGetNumber(){Numberp,*q,*List;NumbermallocLENiorNULLdata{{-locLENhetq}}tNULLiorNULList长度一样与不同NumberJiaFa(Number*num_1,Number*num_2)//返回的数据为逆序{Numberp*q,*r,*s,*num=NULL;p=num_1;while(p->ne*t!=NULL){pnet}q=num_2;while(q->ne*t!=NULL){q=q->ne*t;}s=(Number*)malloc(LEN);s->prior=NULL;s->ne*t=NULL;num=s;while(i--&&j--){s->data=p->data+q->data;if(s->data>9){s->data-=10;况,后面还有p->prior->data++;//i表示number1数字的长度//j表示number2数字的长度//**处理两数相加大于9的情//在长的数据上调整-a}mbermallocLENrsrior}prior{while(i--){{pdatappriordata}riors}{s}}{while(j--){{点-a}s}{s}}ne*t置空umNumberJianFa(Number*num_1,Number*num_2)//返回的数据也为逆序{Numberp*q,*r,*s,*num=NULL;p=num_1;while(p->ne*t!=NULL){p=p->ne*t;}q=num_2;while(q->ne*t!=NULL){q=q->ne*t;}s=(Number*)malloc(LEN);s->prior=NULL;s->ne*t=NULL;//i表示number1数字的长度//j表示number2数字的长度-数的,用减数减去被减数,最后反号{while(i--){s->data=q->data-p->data;if(s->data<0){s->data+=10;q->prior->data--;}r=(Number*)malloc(LEN);s->ne*t=r;r->prior=s;s=r;p=p->prior;q=q->prior;}r=s=s->prior;free(s->ne*t);s->ne*t=NULL;while(j--){if(q->data<0){q->data+=10;q->prior->data--;}s=(Number*)malloc(LEN);s->data=q->data;q=q->prior;r->ne*t=s;s->prior=r;r=s;}s->data=0-s->data;符号,而直接在最高位前加负号最简单s->ne*t=NULL;}elseif(i==j){//对于被减数长度小于减//去掉最后一个没数据的节点-pnum_1;q=num_2;while(p->data==q->data){pnet}umNumbermallocLENriorNULLmdatamnetpumNumbermallocLENriorNULLmdatamnetq{ppnet;}{}atanumnetdata{while(i--){ata{p->prior->data--;}rNumbermallocLEN);iorspprior-}r=s=s->prior;//去掉最后一个没数据的节点free(s->ne*t);while(s->data==0&&s->prior!=NU去)掉前面多余的0,1{s=s->prior;free(s->ne*t);}}if(num_1->ne*t->data<num_2->ne*t->data){while(i--){s->data=q->data-p->data;if(s->data<0){s->data+=10;}r=(Number*)malloc(LEN);s->ne*t=r;r->prior=s;p=p->prior;q=q->prior;}r=s=s->prior;//去掉最后一个没数据的节点free(s->ne*t);while(s->data==0&&s->prior!=NU去)掉前面多余的0,1{s=s->prior;free(s->ne*t);}}s->data=0-s->data;能放符号,而直接在最高位前加负号最简单s->ne*t=NULL;}//反号,因为节点里不-{while(j--){{p->prior->data--;}mbermallocLENrsriori--;}priorwhile(i--)点{{datap->prior->data--;}riors}while(s->data==0&&s->prior!=NULL)//去掉前面多余的0,否{s=s->prior;free(s->ne*t);}//s->data=0-s->data;//反号,因为节点里不能放符号,而直接在最高位前加负号最简单s->ne*t=NULL;}-um}tNumberNumbernum{Number*p;while(p->ne*t!=NULL){pnet}while(k--){printfdpdata);rior不输出','char}harn}storyListNumberlist{Number*p,*q;whilep{}}#include<stdio.h>#include<stdlib.h>{structLnodenet;Lnode*p,*q,*head;-{printfhowmanynumbersdoyouwant;n{printfnniserorr!\n\n");printfhowmanynumbersdoyouwa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论