| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 662 人关注过本帖
标题:建立从1到9的整数链表,并打印
取消只看楼主 加入收藏
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
结帖率:64.71%
收藏
已结贴  问题点数:20 回复次数:2 
建立从1到9的整数链表,并打印
这是在C语言学习视频上看到的一个程序,我是按照视频输入的,但是运行不了,
我将自己理解的注上了,当然我的理解也不一定对,如果哪位高人看出问题了请不吝赐教

程序如下:
程序代码:
#include<stdio.h>
#define INTSIZE sizeof(int)
#define NODESIZE sizeof(int)+sizeof(char *)
#define ERROR {printf("error\n");return;}
int main()
{
    int i;
    char *p,*q,*first,*malloc();
    if((p=malloc(NODESIZE))==NULL)ERROR  /*申请NODESIZE个字节的内存空间,将首地址给p*/
    first=p;                             /*设置first为指向链表头的指针*/
    *(int *)p=1;                         /*将p强转成int型指针,并对p所指向的变量赋值,即*p=1*/
    p+=INTSIZE;                          /*p指针下移两个字节*/
    for(i=2;i<10;i++,p+=INTSIZE)        
      if((q=malloc(NODESIZE))==NULL)ERROR /*为第i个元素申请NODESIZE个字节的内存空间,将首地址给q*/
      else                    
        {
         *(char **)p=q;               /*将p强制升级成指向字符的二级指针,并将一级指针q的地址放在p中
                                        此时第(i-1)个数据元素的指针域存放的就是第i个节点的地址*/
         p=q;                         /*将q赋给p,此时p指向第i个数据元素的首地址*/
         *(int*)p=i;                 /*将p强转成int型指针,并将p所指向的变量赋值为i*/
         }
        *p=NULL;                          /*链表的结尾处指针域为空*/
    for(p=first;p;p+=INTSIZE,p=*(char **)p=i) /* 打印链表值*/
        printf("%d",*(int *)p);         
    putchar('\n');                           
}
搜索更多相关主题的帖子: 链表 整数 打印 
2010-12-02 23:14
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
没人来吗?自己顶一顶
2010-12-03 17:58
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
回复 7楼 laoyang103
你这程序我还真的慢慢看,刚好明天放假有时间,我最近在学数据结构,可以借你的程序理解一下,
不过我刚运行的时候错误一堆(语法错误),估计你也没运行就贴上来了,我自己再慢慢改吧,还是谢谢你!
2010-12-04 00:05
快速回复:建立从1到9的整数链表,并打印
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016826 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved