xiawb 发表于 2014-7-24 15:10:33

为什么是这个结果?

本帖最后由 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");}
}




牡丹花下死做鬼 发表于 2014-7-24 15:58:58

←_← 一点注释都没有 没吃的那么空

xiawb 发表于 2014-7-25 10:00:43

牡丹花下死做鬼 发表于 2014-7-24 15:58
←_← 一点注释都没有 没吃的那么空

加注释了
页: [1]
查看完整版本: 为什么是这个结果?