#define NULL 0什么意思
2010-04-15 08:37提问者: wyy孳孳linda |浏览次数:1372次
#include <stdio.h>
#include <malloc.h>
#define  NULL 0
typedefstruct node
{
int data;
struct node *next;
}linklist;
void input(linklist *L)  /*输入函数*/
{
linklist *r,*p;
    p=(linklist *)malloc(sizeof(node));sizeof是什么
    r=L;
printf("input nums(-1 to quit): ");
scanf("%d",&p->data);
    while(p->data!=-1)
    {
        r->next=p;
        r=p;
        p=(linklist *)malloc(sizeof(node));
scanf("%d",&p->data);
    }
    r->next=NULL;
}
void mergelist(linklist *A,linklist *B,linklist *C)  /*两单链表合并函数*/
{
linklist *p,*q,*r;
p=A->next;  /*A的第一个节点*/
    q=B->next;
    r=A;
while(p && q)
    { 
  if(p->data<q->data)
        {
            r->next=p;
            r=p;
            p=p->next;
        }
        else if(p->data==q->data)
  {
            r->next=p;
            r=p;
            p=p->next;
            q=q->next;
        }
  else
        {
            r->next=q;
            r=q;
            q=q->next;
        }
}
if(p)
  r->next=p;
if(q)
  r->next=q;
}
void output(linklist *L)  /*输出函数*/
{
linklist *p;
p=L->next;
while(p)
{
printf("%2d",p->data);
  p=p->next;
}
printf("\n");
}
void main()
{
linklist *LA,*LB,*LC;
    LA=(linklist *)malloc(sizeof(linklist));
    LB=(linklist *)malloc(sizeof(linklist));
printf("对链表LA进行初始化!\n");;
    input(LA);
    output(LA);
printf("对链表LB进行初始化!\n");
input(LB);
    output(LB);
    LC=LA;
mergelist(LA,LB,LC); 
printf("链表LA和LB合并后为: ");
    output(LC);
}
我来帮他解答
满意回答
2010-04-15 10:30
#define 是宏定义语句,后面加NULL 0 表示把NULL定义成0,
实际上,在编译器工作时候,第一步就是对原文件进行预处理,
首先把#include的文件展开,然后把文件中所有用#define定义的宏用其值替换,对于你这个来说,就是在预处理的时候,把所有的NULL用0进行了替换

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。