问题 解答题
先阅读下面例题的解题过程,再解答后面的题目.
例题:解方程 (x2-1)2-5(x2-1)+4=0
我们可以将x2-1视为一个整体,然后设y=x2-1,则 (x2-1)2=y2,原方程转化为y2-5y+4=0.解得y1=1,y2=4.
当y=1时,x2-1=1,所以x=±
2
;当y=4时,x2-1=4,所以x=±
5

∴原方程的解为:x1=
2
,x2=-
2
,x3=
5
,x4=-
5

题目:用类似的方法试解方程(x2+x)2+(x2+x)=6.
答案

设x2+x=y,

则原方程化为y2+y-6=0,

解得:y1=-3,y2=2,

当y=-3时,x2+x=-3,

即x2+x+3=0,

△=12-4×1×3<0,方程没有实数根,

当y=2时,原方程化为:x2+x=2,

即x2+x-2=0,

解得:x1=-2,x2=-1,

所以原方程的解是x1=-2,x2=-1.

问答题

【说明】函数int Toplogical(LinkedWDigraph G)的功能是对图G中的顶点进行拓扑排序,并返回关键路径的长度。其中图G表示一个具有n个顶点的AOE一网,图中顶点从1~n依次编号,图G的存储结构采用邻接表表示,其数据类型定义如下: typedef struct Gnode{ /*邻接表的表结点类型*/ int adivex; /*邻接顶点编号*/ int weight; /*弧上的权值*/ bstmct Gonde*nextare; /*指示下一个弧的结点*/ }Gnode; typedef struct Adjlist{ /*邻接表的头结点类型*/ char vdata; /*顶点的数据信息*/ struct Gnode*Firstadj; /*指向邻接表的第1个表结点*/ }Adjlist; typedef struct LinkedWDigraph{ /*图的类型*/ int n, e;/*图中顶点个数和边数*/ struct Adjlist head; /*指向图中第1个顶点的邻接表的头结点*/ }LinkedWDigraph; 【函数】 int Toplogical(LinkedWDigraph G) { Gnode *p; int j,w,top=0; int *Stack,*ve,*indegree; ve=(int *)mallloc(G.n+1)* sizeof(int)}; indegree=(int *)malloc((G.n+1)*sizeof(int));/*存储网中个顶点的入度*/ Stack=(int *)malloc((G.n+1)*sizeof(int)); /*存储入度为0的顶点的编号*/ if(!ve‖!indegree‖!Stack) exit(0); for(j=1;j<=G.n;j++){ ve[j]=0; indegree[j]=0; }/*for*/ for(j=1;j<=G.n;j++){ /*求网中各顶点的入度*/ p=G.head[j].Firstadj; while(p){ (1) ; p=p->nextarc; }/*while*/ }/*for*/ for(i=1;j<=G.n;j++)/求网中入度为0的顶点并保存其编号*/ if(!indegree[j]) Stack[++top]=j; while(top>0){ w= (2) ; printf("%c", G.head[w].vdata); p=G.head[w].Firstadj; while(p){ (3) ; if(!indegree[p->adjvex])Stack[++top]=p->adjvex; if( (4) )ve[p->adjvex]=ve[w]+p->weight; p=p->nextarc; }/*while*/ return (5) ; }/*Toplogical*/

问答题