链表指向和多变量赋值问题
void intiate() //主要问题就这,我循环赋值,但每次只改变了CO1和CO2的前面一个值,后面那个设备指针我没改对,所以运行只能成功运行单数的。
{
int i;
node *P; /*申请进程结点*/
DCT *D; /*申请一个DCT表的结点*/
COCT *CO1,*CO2; /*申请一个COCt表的结点*/
SDT *SD; /*申请一个SDT表的结点*/
F=(SDT*)malloc(sizeof(SDT)); /*申请一个SDT表F,并进行初始设置*/
S=F;
CH=(CHCT*)malloc(sizeof(CHCT));
CH->front=(node*)malloc(sizeof(node));
CH->front->next=NULL;
for(i=1;i<=4;i++)
{ CO1=(COCT*)malloc(sizeof(COCT));
CO1->front=(node*)malloc(sizeof(node));
CO1->front->next=NULL;
CO2=(COCT*)malloc(sizeof(COCT));
CO2->front=(node*)malloc(sizeof(node));
CO2->front->next=NULL;
SD=(SDT*)malloc(sizeof(SDT));
D=(DCT*)malloc(sizeof(DCT));
P=(node*)malloc(sizeof(node));
SD->dtype=i;
D->front=P;
P->next=NULL;
SD->D=D;
D->dstate=0; /*输入第i个设备的状态*/
D->dtype=i;
D->num=0;
cout<<i<<endl;
cout<<"Please input the controler of "<<i<<" device:"<<endl;/*输入与第i个设备相连的控制器类型*/
cin>>CO1->cotype;
CO1->costate=0; /*输入与第i个设备相连的控制器的状态*/
SD->D->CO1=CO1;
cout<<"Please input the channel of "<<i++<<" controler:"<<endl; /*输入与第i个控制器相连的通道类型*/
cin>>CH->chtype; /*输入与第i个控制器相连的通道类型*/
CH->chstate=0;
SD->D->CO1->CH=CH;
cout<<"Please input the controler of "<<i<<" device:"<<endl;
cin>>CO2->cotype;
CO2->costate=0; /*输入与第i个设备相连的控制器的状态*/
SD->D->CO2=CO2;
cout<<"Please input the channel of "<<i<<" controler:"<<endl; /*输入与第i个控制器相连的通道类型*/
cin>>CH->chtype; /*输入与第i个控制器相连的通道类型*/
CH->chstate=0;
SD->D->CO2->CH=CH;
S->next=SD;
S=SD;
SD->next=NULL;
}
show(); /*显示函数调用*/
}
主要是这个循环,是设备分配代码的一部分,用语对设备的初始化,分别是2个控制器控制4个设备,现在的问题是,每次初始化时只能对1.3号设备初始化,2.4号设备赋不到值,想在FOR循环中改变链表指针,使指针后移,能成功初始化4个设备。
郁闷了很9了,求大家帮忙,多谢了