dragonraje

导航

数据结构2.1线性表及其实现

举例:用线性表示多项式

 

方法1:顺序存储结构表示

#include<stdio.h>
#define
n 10 #include<math.h> int main(){ int i; double a[n];//a数组对应系数,i对应指数。 for(i=0;i<n;i++){ scanf("%lf",&a[i]);//n } printf("f(x)="); for(i=0;i<n-1;i++){ if(a[i]!=0)//n printf("%.0lfX^%d+",i,a[i]); } printf("%.0lfX^%d",n,a[i]); } 复杂度为O(n).

方法1中把指数i从0到N全都开辟出来,包括系数为0的。

 

但很明显,当需要类似X^3000+X类似的多项式,需要a[3001]个数组,但这个数组中,有2999个都是没有用到的,造成了空间的极大浪费。

因此有了接下来的方法2:结构体数组

#include<stdio.h>
#define n 10
//定义一个结构体 struct stu{ int i;//指数 int k;//系数 }poly[n]={ { 1,2 //赋值给指数和系数 }, { 3,1 }, { 3,4 }, { 2,5 }, { 6,3 } }; int main(){ int j; printf("f(x)="); for(j=0;j<n;j++){ if(poly[j].k!=0) printf("%dX^%d+",poly[j].k,poly[j].i); } }

这种方法可以大大节省运行时数组占用的空间。

方法三:链式存储。

 

 最后一种直接从mooc接了张图,等线性表再开始详细记录。

 

posted on 2022-06-23 16:20  dragonraje  阅读(8)  评论(0编辑  收藏  举报