|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 xiawb 于 2014-7-25 10:00 编辑
为什么是这个结果?
#include <stdio.h>
struct Number/*链表1(结构体),包括序号(从0开始),数字,下个结构体地址*/
{int id;
int num;
struct Number *next;};
struct Number_1/*链表2(结构体),包括指向链表1中结构体的地址,下个链表2结构体地址*/
{struct Number *x1;
struct Number_1 *x2;};
void main()
{int m,n,i,k;
struct Number *head,*p1,*p2;/*结构体1的三个地址变量*/
head=0;
p1=(struct Number *)malloc(sizeof(struct Number));
printf("请输入总元素个数M:\n");/*链表1长度定义*/
scanf("%d",&m);
if(m>0)
{ head=p1;
for(i=0;i<m;i++)/*链表1赋值*/
{ p2=p1;
(*p2).id=i;
printf("请输入第%d个元素值:",i);
scanf("%d",&(*p2).num);
p1=(struct Number *)malloc(sizeof(struct Number));
(*p2).next=p1;
}
(*p2).next=0;
printf("输入完毕,请再输入需要从中取出的元素个数:");/*暂时无意义,不考虑*/
scanf("%d",&n);
if(n<=m&&n>0)
{ struct Number_1 *p3,*head_1;/*建立链表2*/
head_1=p3=(struct Number_1 *)malloc(sizeof(struct Number_1));
(*p3).x1=(*head_1).x1=head;/*链表2第一个结构体中的第一个成员指向链表1的第一个结构体,后面的打印结果无语了*/
printf("%d,%d\n",head,(*head).num);
printf("%d,%d,%d,%d\n",*head_1,*((*head_1).x1),(*((*head_1).x1)).id,(*((*head_1).x1)).num);
printf("%d,%d,%d,%d\n",*head_1,*((*head_1).x1),(*((*head_1).x1)).num,(*((*head_1).x1)).id);
printf("%d,%d\n",head,(*head).num);
}
else
{printf("N值无意义!\n");}
}
else
{printf("M值无意义!\n");}
}
|
-
|