C 元素不会从堆栈中移除
deleteen()方法不起作用,程序将转到无限输出,请帮助修复它 堆栈:C 元素不会从堆栈中移除,c,linked-list,stack,singly-linked-list,C,Linked List,Stack,Singly Linked List,deleteen()方法不起作用,程序将转到无限输出,请帮助修复它 堆栈: typedef struct Node{ int value; struct Node *next; } NODE, *pNODE; typedef struct Stack{ pNODE top; int len; } STACK, *pSTACK; void deleteEven(pSTACK pS){ pNODE pN = pS->top; while(p
typedef struct Node{
int value;
struct Node *next;
} NODE, *pNODE;
typedef struct Stack{
pNODE top;
int len;
} STACK, *pSTACK;
void deleteEven(pSTACK pS){
pNODE pN = pS->top;
while(pN){
if(pN->value % 2 == 0){
pNODE del = pN;
pN = pN->next;
free(del);
}
else
pN = pN->next;
}
}
方法:
typedef struct Node{
int value;
struct Node *next;
} NODE, *pNODE;
typedef struct Stack{
pNODE top;
int len;
} STACK, *pSTACK;
void deleteEven(pSTACK pS){
pNODE pN = pS->top;
while(pN){
if(pN->value % 2 == 0){
pNODE del = pN;
pN = pN->next;
free(del);
}
else
pN = pN->next;
}
}
在函数中,当指向的节点包含偶数值时,指针顶部不会更改。并且删除的节点之前的上一个节点的下一个数据成员也不会更改 该函数可以通过以下方式定义
void deleteEven( pSTACK pS )
{
pNODE *pN = &pS->top;
while( *pN != NULL )
{
if( ( *pN )->value % 2 == 0 )
{
pNODE del = *pN;
*pN = ( *pN )->next;
free( del );
}
else
{
pN = & ( *pN )->next;
}
}
}
声明堆栈时,请不要忘记在开始时将数据成员top设置为NULL。您能提供一个解决方案吗?我发现这方面存在很多问题,甚至不知道从哪里开始