int number4to3()//应用动态链表取值
{
struct Value4 *head=0,* p=0;//定义2个指针,head为头部指针 p为普通指针用来接收head->next的值
struct Value4* headnext=0;
Value4* pPre = NULL;//定义一个指针(接收p前一个的指针)
Value4 value4;
int i, j, z;
int w = 0;
int nLen = sizeof(Value4);//确定结构体大小
struct Value4 gJ[100];//定义结构体指针
for (i = 1;i <= 4;i++)
{
value4.nPrice1 = i;
for (j = 1;j <= 4;j++)
{
if (j != i)
value4.nPrice2 = j;
else
continue;
for (z = 1;z <= 4;z++)
{
if (z != i && z != j)
value4.nPrice3 = z;
else
continue;
if (w==0)//分情况w==0时相当于第一个值,只有下一个值(当w==0时才进入)
{
head = (struct Value4*)malloc(nLen);//开辟一个新单元,并让p和head指向它
head->nPrice1 = i, head->nPrice2 = j, head->nPrice3 = z;//给head指针的变量赋值
head->next = NULL;//head指向的下一个为空
pPre = head;//p的上一个链为
printf("%d%d%d\n",head->nPrice1, head->nPrice2, head->nPrice3);//输出head指针的值
}
else if(w>0)//当w>0时进入
{
p = (struct Value4*)malloc(nLen);//第二个单元
p->nPrice1 = i, p->nPrice2 = j, p->nPrice3=z;//赋循环的值
p->next = NULL;//定义p指针的下一个为空
// 赋值上一个next指针
pPre->next = p;
// 保存指针
pPre = p;
printf("%d%d%d\n", p->nPrice1, p->nPrice2, p->nPrice3);//输出p指针的值
}
w++;//对w进行自加1
}
}
}
struct Value4* phead = head;//定义一个临时变量
while (phead!=NULL)//条件判断
{
printf("%d%d%d\n", phead->nPrice1, phead->nPrice2, phead->nPrice3);//指针给值
phead = phead->next;//指针指向链表下一个指
}
return 0;
}