今天看完了吉大C语言第40讲,自己尝试写了下。
#include <stdio.h>
#define NODSIZE sizeof(int)+sizeof(char*)
#define INTSIZE sizeof(int)
#define ERROR {printf("ERROR\n");return(0);}
main()
{
char *p,*q,*first;
int i;
p=(char*)malloc(NODSIZE);first=p;
for(i=0;i<10;i++)
{
if((p=(char*)malloc(NODSIZE))==NULL) ERROR
else{
*(int*)p=i;
p+=INTSIZE;
q=(char*)malloc(NODSIZE);
*(char**)p=q;
p=q;
}
}
p=first;
for(i=0;i<10;i++)
{
printf("%d\n",*p);
p+=INTSIZE;
p=*(char**)p;
}
}
很遗憾,不懂为什么加了if((p=(char*)malloc(NODSIZE))==NULL) ERROR 会出现不正常数值。删掉后,正常了。
#include <stdio.h>
#define NODSIZE sizeof(int)+sizeof(char*)
#define INTSIZE sizeof(int)
#define ERROR {printf("ERROR\n");return(0);}
main()
{
char *p,*q,*first;
int i;
p=(char*)malloc(NODSIZE);first=p;
for(i=0;i<10;i++)
{
*(int*)p=i;
p+=INTSIZE;
q=(char*)malloc(NODSIZE);
*(char**)p=q;
p=q;
}
p=first;
for(i=0;i<10;i++)
{
printf("%d\n",*p);
p+=INTSIZE;
p=*(char**)p;
}
}