haovcf 发表于 2015-1-10 14:09:46

如何申请一个节点空间

// 结构类型如下,要申请一个plinkstack 的空间, 里面含有一个int 型指针 和 pstacknode 类型的 top 结构体。
// 该如何申请,要多大,并加以解释
//困扰我很久了,老出问题。
// 大神,别走啊,我还有问题。
typedef int elemtype ;
typedef struct stacknode{
    elemtype data ;
    struct stacknode *next ;
} *pstacknode ;
typedef struct stacklist
{
    pstacknode top ;
    int count ;
}*plinkstack ;

haovcf 发表于 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") ;

}

xueying 发表于 2015-1-11 21:37:35

楼主分析是对的,只是题目中
// 结构类型如下,要申请一个plinkstack 的空间, 里面含有一个int 型指针 和 pstacknode 类型的 top 结构体。
应该是top指针吧:lol:

轻允一世温柔 发表于 2015-1-20 17:25:12

pstacknode *p;
p = (pstacknode *)malloc(sizeof(pstacknode));
个人认为如此,你可以参考下:big

wingtree 发表于 2015-1-21 14:47:47

又是C语言。。。

zjc7836 发表于 2015-1-24 09:48:49

学习一下

阔怀 发表于 2015-8-16 16:03:14

{:1_1:}

dabaojian 发表于 2015-8-22 16:19:44

学习一下

leonardzzy 发表于 2015-8-23 14:52:34

没怎么看明白楼主的意思?

GaRi 发表于 2015-8-26 21:40:02

支持4L :lol::lol::lol::lol:

waliemiao 发表于 2015-10-15 04:12:36

学习一下

dps521 发表于 2015-11-30 11:10:11

过来看看一起学习 一下啊:smile:smile:smile:smile:smile

meou 发表于 2015-12-1 23:38:02

typedef struct stacklist
{
   pstacknode top ;
   int count ;
}linkstack,*plinkstack ;
改成这样,然后
plinkstack l=(plinkstack)malloc(sizeof(linkstack));

time.c 发表于 2015-12-6 14:36:10

#incluude"stdlib.h"
sequence s;
s=(sequence *)malloc(sizeof(sequence));
页: [1]
查看完整版本: 如何申请一个节点空间