我无法将元素添加到单个链接列表的末尾。我试过寻找其他问题但我无法找到解决方案。
代码是:
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node* next;
};
void PushE(struct node** head,int data);
int main(){
struct node* a = NULL;
PushE(&a,3);
PushE(&a,4);
}
void PushE(struct node** headRef, int data){
struct node* current = *headRef;
struct node* nNode;
nNode = (struct node*)malloc(sizeof(struct node));
nNode->data = data;
nNode->next= NULL;
if(current == NULL)
current = nNode;
else{
while(current->next != NULL)
current = current->next;
current->next = nNode;
}
}
任何人都可以帮我实现这个。
答案 0 :(得分:4)
问题出在这里:
def create_object(self, text):
return self.get_queryset().create(**{self.create_field: text, 'user' : self.request.user})
你是如何获得最新消息的?
if(current == NULL)
current = nNode; // <--
这里的当前是指向headRef指针的副本!
您需要直接分配到struct node* current = *headRef;
。
答案 1 :(得分:1)
在此if语句中
if(current == NULL)
current = nNode;
改变了局部变量电流。头部指向的指针不会改变。因此退出函数后原始列表将保持不变。
可以通过以下方式声明和定义函数
int PushE( struct node ** head, int data );
// ...
int PushE( struct node ** head, int data )
{
struct node *nNode = malloc( sizeof( struct node ) );
int success = nNode != NULL;
if ( success )
{
nNode->data = data;
nNode->next = NULL;
while ( *head ) head = &( *head )->next;
*head = nNode;
}
return success;
}