第1章绪论 要求 1、基本概念:数据结构、数据元素等 2、算法及其时间复杂度 3、数据结构的抽象数据类型表示 教材习题解答: 1、略 2、×、×、√ n(n+1)(n+2 6 4、//通过参数表中的参数显式传递 # define n10/设定为N次多项式 void Assign(float a) t l printf("多项式共有%d项,请依次输入各系数的值n",N+1); for(i=0: i<=N; i++) printf("请输入第%次项系数:",i); scanf(%f", a+i) float Pn(float x0, float a[) for(i=l: i<=N: i++) pn pntali]*x return pn; void main O float a[N+1]=(01 float xo Assign(a)
第 1 章 绪论 要求: 1、基本概念:数据结构、数据元素等; 2、算法及其时间复杂度; 3、数据结构的抽象数据类型表示; 教材习题解答: 1、略 2、╳、╳、√ 3、 6 n(n +1)(n + 2) 4、//通过参数表中的参数显式传递 #include #define N 10 //设定为 N 次多项式 void Assign(float a[]) { int i; printf("多项式共有%d 项,请依次输入各系数的值\n",N+1); for(i=0;i<=N;i++) { printf("请输入第%d 次项系数:",i); scanf("%f",a+i); } } float Pn(float x0,float a[]) { int i; float pn=a[0],x=1; for(i=1;i<=N;i++) { x = x*x0; pn = pn+a[i]*x; } return pn; } void main() { float a[N+1]={0}; float x0; Assign(a);
printf("请输入x0的值:") scanf (%f", &x0) printf("多项式的值是:%fn”,Pn(x0,a)) 参考练习: 1、试设计将数组inta[n]中所有奇数移到偶数之前的算法,要求不能使用其它新数组,且时间复杂 度为0(n) 参考解答: void shift(int al, int n while(i #define n 50 #define m 5 typedef struct node int number //学生的编号 struct node*next;/后续学生所在结点的地址(指针) I NODE NODE* Create(void)/创建N个学生结点的环形链表,并返回其中编号为N的结点的地址
printf("请输入 x0 的值:"); scanf("%f",&x0); printf("多项式的值是:%f\n",Pn(x0,a)); } 参考练习: 1、试设计将数组 int a[n]中所有奇数移到偶数之前的算法,要求不能使用其它新数组,且时间复杂 度为 O(n)。 参考解答: void shift(int a[],int n) { int i=0,j=n-1,t; while(i #include #define N 50 #define M 5 typedef struct node { int number; //学生的编号 struct node * next; //后续学生所在结点的地址(指针) }NODE; NODE *Create(void) //创建 N 个学生结点的环形链表,并返回其中编号为 N 的结点的地址 {
NODE *p, *g, *h h null if(h=NULL)/如果是空链表 h=(NODE *)malloc(sizeof (NODE)) p p->number =1 //如果不是空链表 q=(NODE *)malloc(sizeof(NODE)) p->next =h: return h void Deal(NODE *h) NODE *p, *q while(p! =NULL & p->next!=p k=k+1; g->next p->next: printf(%d\t", p->number free(p)
NODE *p,*q,*h; int i; i = N; h = NULL; p = NULL; while(i>0) { if(h==NULL) //如果是空链表 { h = (NODE *)malloc(sizeof(NODE)); p = h; p->number = i; } else //如果不是空链表 { q = (NODE *)malloc(sizeof(NODE)); q->number = i; p->next = q; p = q; } i--; } p->next = h; return h; } void Deal(NODE *h) { NODE *p,*q; int k; p = h; k=1; while(p!=NULL && p->next!=p) { q = p; p = p->next; k = k+1; if(k == M) { k = 0; q->next = p->next; printf("%d\t",p->number); free(p); p = q;
printf("%d\t", p->number): void mal NODE **h h= Create o Deal(h)
} } printf("%d\t",p->number); } void main() { NODE *h; h = Create(); Deal(h); }