作者在 2010-04-11 18:20:49 发布以下内容
教科书上的经典算法是用struct来实现链表这一数据结构,本文用指针来实现建立链表的操作,虽然实际应用中不常用,但是对于指针的理解是一种很好的案例.
/*程序功能:建立从1-9的链表并输出(非数据结构实现)*/
#include<stdio.h>
#define INTSIZE sizeof(int)
#define NODESIZE (sizeof(int)+sizeof(char *))
#define ERROR {printf("Error\n");return;}
main()
{
int i;
char *p,*q,*first,*malloc();
if((p=malloc(NODESIZE))==NULL)
ERROR
first=p;
*(int *)p=1;//强制类型转换并赋值
p+=INTSIZE;
for(i=2;i<10;i++,p+=INTSIZE)
if((q=malloc(NODESIZE))==NULL)
ERROR
else
{
*(char **)p=q;
p=q;
*(int *)p=i;
}
*p=NULL;
for(p=first;p;p+=INTSIZE,p=*(char **)p)
printf("%d",*(int *)p);
printf("\n");
}