实验一 线性表
1. 设顺序表A中的数据元素递增有序,试写一程序,将x插入到顺序表的适当位置上,使该表仍然有序。
分析:其实这个题在学C语言时就已经写过了,这里采用顺序表来存储数据。主要就是考虑插入的位置是不是在最后一个,如果不在最后一个,那么就要移动数据了,算法很简单就不再说了,这里的数据都看成是整型的。 源程序:
//1.1.c
#include
#include
void Insert(int* p,int length,int n){//插入函数
int i,j;
int flag=0;
if(n>=p[length-1]){//n比最大数还要大时
p[length]=n;
flag=1;
}
else{
for(i=length-2;i>=0;i--){
if(n>=p[i]){//插入n
for(j=length;j>=i+2;j--){
p[j]=p[j-1];
}
p[i+1]=n;
flag=1;
break;
}
}
}
if(flag==0){//n为最小数时
for(j=length;j>=1;j--){
p[j]=p[j-1];
}
p[0]=n;
}
}
int main(){
int L[10]={1,3,6,8,9,10,15};//初始化一个非递减速有顺表
int length=7;//初始化表长
int i,x;
printf(\插入前的顺序表为:\\n\
for(i=0;i printf(\ } printf(\请输入要插入的整数:\\n\ scanf(\ Insert(L,length,x);//插入x printf(\插入%d后的顺序表为:\\n\ for(i=0;i<=length;i++){ printf(\ } printf(\ system(\ return 0; } 2. 用单链表ha 存储多项式A(x )=a0+a1x1+a2x2+…+anxn(其中aI为非零系数),用单链表hb 存储多项式B(x )=b0+b1x1+b2x2+…+bmxm(其中bj为非零系数),要求计算C(x )= A(x )+B(x ),结果存到单链表hc中。试写出程序。 分析:这题主要是两个链表的相加,注意指针不要弄错就行,源程序有很详细的注释。 源程序: //1.2.c #include static int n; static int m; static int max; struct Polynomial{//多项式系数结构体 float data; struct Polynomial* next; }; struct Polynomial* Creat_H(int k){//创建多项式系数的链表 struct Polynomial* L; struct Polynomial* p; p=(struct Polynomial*)malloc(sizeof(struct Polynomial)); L=p; float temp; int i; printf(\请依次输入系数(中间用空格隔开):\\n\ for(i=0;i<=k;i++){ scanf(\ p->data=temp; if(i==k){ p->next=NULL; break; } p->next=(struct Polynomial*)malloc(sizeof(struct Polynomial)); p=p->next; } return L; } struct Polynomial* Calculate(struct Polynomial* Pa,struct Polynomial* Pb){ //计算两个多项式相加 struct Polynomial* Pc; struct Polynomial* L; int i; max=n>=m? n:m; Pc=(struct Polynomial*)malloc(sizeof(struct Polynomial)); L=Pc; for(i=0;i<=max;i++){ if(i==max){ Pc->next=NULL; break; 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据结构实验实习题答案在线全文阅读。
相关推荐: