如何申请一个节点空间
// 结构类型如下,要申请一个plinkstack 的空间, 里面含有一个int 型指针 和 pstacknode 类型的 top 结构体。// 该如何申请,要多大,并加以解释
//困扰我很久了,老出问题。
// 大神,别走啊,我还有问题。
typedef int elemtype ;
typedef struct stacknode{
elemtype data ;
struct stacknode *next ;
} *pstacknode ;
typedef struct stacklist
{
pstacknode top ;
int count ;
}*plinkstack ;
恩,没有人回复,那我自问自答。定义一个 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 的空间, 里面含有一个int 型指针 和 pstacknode 类型的 top 结构体。
应该是top指针吧:lol: pstacknode *p;
p = (pstacknode *)malloc(sizeof(pstacknode));
个人认为如此,你可以参考下:big 又是C语言。。。 学习一下
{:1_1:} 学习一下
没怎么看明白楼主的意思?
支持4L :lol::lol::lol::lol: 学习一下 过来看看一起学习 一下啊:smile:smile:smile:smile:smile typedef struct stacklist
{
pstacknode top ;
int count ;
}linkstack,*plinkstack ;
改成这样,然后
plinkstack l=(plinkstack)malloc(sizeof(linkstack)); #incluude"stdlib.h"
sequence s;
s=(sequence *)malloc(sizeof(sequence));
页:
[1]