实验二 线性表的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二线性表的应用(2学时)
一、实验目的:掌握线性表的基本结构和操作方法,培养学生灵活使用结构解决实际问题的能力。
二、实验内容:
设计一个100位以内的长整数加减运算的程序。
三、实验要求:
1,输入输出要求:每四位一组,组间用逗号分隔;
2,加和减分别用不同的程序实现
3,程序应考虑输入数据的符号
四、参考程序
/*设计一个100位以内的长整数加减运算的程序。
实验要求:
1,输入输出要求:每四位一组,组间用逗号分隔;
2,程序应考虑输入数据的符号*/
#include
#include
#include
#include
#include
#define LEN sizeof(struct student)
struct student{
int score;
struct student *next;
};
int lenm,lenn,lensum;//m与n的长度
void main()
{
struct student *creat(int *d,int *len);
void print(struct student *head);
struct student *add(struct student *m,struct student *n);
struct student *sub(struct student *m,struct student *n);
int compare(struct student *m,struct student *n);
struct student *m,*n,*sum;
int s1,s2,s3,k;
char ch;
printf("输入第一个数:\n");
m=creat(&s1,&lenm);//输入第一个数放在链表m中,s1为其符号
printf("\n选择运算,输入+或-:");
scanf("%c",&ch);getchar();
printf("\n输入第二个数:\n");
n=creat(&s2,&lenn);//输入第一个数放在链表n中,s2为其符号
k=compare(m,n);//k=1则m>n,k=-1则m if(ch=='+')//加法运算 { if(s1*s2>0){s3=s1;sum=add(m,n);} else { if(s1>0&&k==1) {s3=1;sum=sub(m,n);}//m>0,n<0,m>|n|,m+n=m-|n| if(s1>0&&k==-1){s3=-1;sum=sub(n,m);}//m>0,n<0,m<|n|,m+n=-(|n|-m) if(s1<0&&k==1){s3=-1;sum=sub(m,n);}//m<0,n>0,|m|>|n|,m+n=-(|m|-n) if(s1<0&&k==-1){s3=1;sum=sub(n,m);}//m<0,n>0,|m|<|n|,m+n=n-|m| if(k==0) s3=0; } }//endif+ if(ch=='-')//减法运算 { if(s1*s2<0) {s3=s1;sum=add(m,n);} else{ if(s1>0&&k==1) {s3=1;sum=sub(m,n);}//m>0,n>0,m>n,m-n=m-n if(s1>0&&k==-1){s3=-1;sum=sub(n,m);}//m>0,n>0,m if(s1<0&&k==1){s3=-1;sum=sub(m,n);}//m<0,n<0,|m|>|n|,m-n=-(|m|-|n|) if(s1<0&&k==-1){s3=1;sum=sub(n,m);}//m<0,n<0,|m|<|n|,m-n=|n|-|m| if(k==0) s3=0; } }//endif- if(s3>0) {printf("结果为:+");print(sum);} if(s3<0) {printf("结果为:-");print(sum);} if(s3==0) printf("结果为:0"); }//endmain struct student *creat(int *sign,int *n)//输入数据并建立链表首结点存放最低4位数据{ void print(struct student *head);struct student *p1,*p2; int i=0,j,k=0,len; char s[5],c[130]; *sign=1; gets(c); if(c[0]=='-'){i=1;*sign=-1;} p1=p2=(struct student *)malloc(LEN);//建立尾结点 p1->score=0; p1->next=NULL; len=strlen(c); for(;i { j=0; while(c[i]>='0'&&c[i]<='9')//取出逗号之间的每一组数存放到字符数组s中 {