鱼C论坛

 找回密码
 立即注册
查看: 5302|回复: 13

[已解决]如何申请一个节点空间

[复制链接]
发表于 2015-1-10 14:09:46 | 显示全部楼层 |阅读模式
5鱼币
// 结构类型如下,要申请一个plinkstack 的空间, 里面含有一个int 型指针 和 pstacknode 类型的 top 结构体。
// 该如何申请,要多大,并加以解释
//困扰我很久了,老出问题。
// 大神,别走啊,我还有问题。
typedef int elemtype ;
typedef struct stacknode{
    elemtype data ;
    struct stacknode *next ;
} *pstacknode ;
typedef struct stacklist
{
    pstacknode top ;
    int count ;
}*plinkstack ;

最佳答案
2015-1-10 14:09:47
恩,没有人回复,那我自问自答。定义一个 plinkstack head ;
head = ( plinkstack ) malloc( sizeof( struct stacklist ) )  ;  这样可以申请到8 个字节, 可以存放int 型 head->count  和 一个指针型的head->top , 要初始化链栈 是, 只需申请一个这样的空间就可以了。
然后将head->top = NULL ; 就可以完成初始化 。 要 head->top 存放stacknode 类型的地址, 就要继续申请空间。head->top =( pstacknode ) malloc( sizeof( struct stacknode ) ) ; 就可以了。 释放节点的时候要先释放pstacknode 类型的指针, 然后再释放plinstack 类型的指针。
下面 显示 初始化链栈 和 销毁 链栈 的相关代码 。 希望我自己能明白 ,对别人也有所帮助 。

plinkstack initlinkstack( void )
{
    plinkstack head = NULL ;

    head = ( plinkstack ) malloc( sizeof( struct linkstack ) ) ;
    if( head == NULL )
    {
        printf("the head nodelist space failure !\n") ;
        return NULL ;
    }

    head->count = 0 ;

    head->top = NULL ;

    printf("init the head linkstack failure !\n") ;

    return head ;

}

void setemptylinkstack( plinkstack head )
{
    pstacknode p = head->top , q = NULL ;

    while( p != NULL )
    {
        q = p->next ;
        free( p ) ;
        p = q ;
    }

     free( head ) ;
     head = NULL ;

    printf("destory linkstack success !\n") ;

}

最佳答案

查看完整内容

恩,没有人回复,那我自问自答。定义一个 plinkstack head ; head = ( plinkstack ) malloc( sizeof( struct stacklist ) ) ; 这样可以申请到8 个字节, 可以存放int 型 head->count 和 一个指针型的head->top , 要初始化链栈 是, 只需申请一个这样的空间就可以了。 然后将head->top = NULL ; 就可以完成初始化 。 要 head->top 存放stacknode 类型的地址, 就要继续申请空间。head->top =( pstacknode ) malloc( sizeof( s ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-1-10 14:09:47 | 显示全部楼层    本楼为最佳答案   
恩,没有人回复,那我自问自答。定义一个 plinkstack head ;
head = ( plinkstack ) malloc( sizeof( struct stacklist ) )  ;  这样可以申请到8 个字节, 可以存放int 型 head->count  和 一个指针型的head->top , 要初始化链栈 是, 只需申请一个这样的空间就可以了。
然后将head->top = NULL ; 就可以完成初始化 。 要 head->top 存放stacknode 类型的地址, 就要继续申请空间。head->top =( pstacknode ) malloc( sizeof( struct stacknode ) ) ; 就可以了。 释放节点的时候要先释放pstacknode 类型的指针, 然后再释放plinstack 类型的指针。
下面 显示 初始化链栈 和 销毁 链栈 的相关代码 。 希望我自己能明白 ,对别人也有所帮助 。

plinkstack initlinkstack( void )
{
    plinkstack head = NULL ;

    head = ( plinkstack ) malloc( sizeof( struct linkstack ) ) ;
    if( head == NULL )
    {
        printf("the head nodelist space failure !\n") ;
        return NULL ;
    }

    head->count = 0 ;

    head->top = NULL ;

    printf("init the head linkstack failure !\n") ;

    return head ;

}

void setemptylinkstack( plinkstack head )
{
    pstacknode p = head->top , q = NULL ;

    while( p != NULL )
    {
        q = p->next ;
        free( p ) ;
        p = q ;
    }

     free( head ) ;
     head = NULL ;

    printf("destory linkstack success !\n") ;

}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-11 21:37:35 | 显示全部楼层
楼主分析是对的,只是题目中
// 结构类型如下,要申请一个plinkstack 的空间, 里面含有一个int 型指针 和 pstacknode 类型的 top 结构体。
应该是top指针吧:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-20 17:25:12 | 显示全部楼层
pstacknode *p;
p = (pstacknode *)malloc(sizeof(pstacknode));
个人认为如此,你可以参考下:big
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-21 14:47:47 | 显示全部楼层
又是C语言。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-24 09:48:49 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-16 16:03:14 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-22 16:19:44 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-23 14:52:34 | 显示全部楼层
没怎么看明白楼主的意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-26 21:40:02 | 显示全部楼层
支持4L :lol::lol::lol::lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-10-15 04:12:36 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-30 11:10:11 | 显示全部楼层
过来看看  一起学习 一下啊:smile:smile:smile:smile:smile
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-1 23:38:02 | 显示全部楼层
typedef struct stacklist
{
     pstacknode top ;
     int count ;
}linkstack,*plinkstack ;
改成这样,然后
plinkstack l=(plinkstack)malloc(sizeof(linkstack));
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-6 14:36:10 | 显示全部楼层
#incluude"stdlib.h"
sequence s;
s=(sequence *)malloc(sizeof(sequence));
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 13:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表