恩,没有人回复,那我自问自答。定义一个 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") ;
}