建立链表的另类方法

作者在 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");

}

默认分类 | 阅读 609 次
文章评论,共0条
游客请输入验证码
浏览51132次
文章分类