| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 662 人关注过本帖
标题:建立从1到9的整数链表,并打印
只看楼主 加入收藏
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
结帖率:64.71%
收藏
已结贴  问题点数:20 回复次数:8 
建立从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
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
收藏
得分:0 
这个,先把编译器报的错误贴出来吧

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-12-03 00:07
gongyaping
Rank: 4
来 自:广东肇庆怀集
等 级:业余侠客
帖 子:174
专家分:257
注 册:2010-8-1
收藏
得分:0 
共同学习。
2010-12-03 05:25
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
没人来吗?自己顶一顶
2010-12-03 17:58
a657195029
Rank: 2
等 级:论坛游民
帖 子:7
专家分:28
注 册:2010-10-31
收藏
得分:0 
什么程序  我晕不如自己写个  - -  
2010-12-03 18:18
a343637412
Rank: 7Rank: 7Rank: 7
来 自:そ ら
等 级:黑侠
帖 子:357
专家分:620
注 册:2010-9-26
收藏
得分:0 
有点看不懂....我好像还没学到
2010-12-03 18:51
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <malloc.h>
struct node
{
    int a;
    node *next;
};
node *head=new node;
void DisPlay()
{
    node *p=head->next;
    while(p)
    {
        printf(" %d ",p->a);
        p=p->next;
    }
}
int main()
{
    head->next=NULL;
    node *p;
    for(int i=0;i<10;i++)
    {
        p=(node *)malloc(sizeof(node));
        p->a=i+1;
        p->next=NULL;
        p->next=head->next;
        head->next=p;
    }
    DisPlay();
    return 0;
}
楼主 自己看  我先帮你写的  插入法时倒叙插入法   自己慢慢理解

                                         
===========深入<----------------->浅出============
2010-12-03 19:54
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
回复 7楼 laoyang103
你这程序我还真的慢慢看,刚好明天放假有时间,我最近在学数据结构,可以借你的程序理解一下,
不过我刚运行的时候错误一堆(语法错误),估计你也没运行就贴上来了,我自己再慢慢改吧,还是谢谢你!
2010-12-04 00:05
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

我运行了  没错的

                                         
===========深入<----------------->浅出============
2010-12-04 09:49
快速回复:建立从1到9的整数链表,并打印
数据加载中...
 
   



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

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