LNode * reverse(LNode *head,LNode *root){
LNode *temp,*node;
temp= head;
while(temp!= NULL){
node = (LNode*)malloc(sizeof(LNode));
node->data= temp->data;
node -> next = NULL;
node->next = root;
root = node;
temp = temp->next;
}
return root;
}
运行上面代码对链表进行逆序,结果出现乱码了,这是为什么啊
LNode *reverse(LNode *head) {
LNode *prev = NULL;
LNode *next = NULL;
LNode *p = head;
while (p) {
next = p->next;
p->next = prev;
prev = p;
p = next;
}
return prev;
}
申请的内存加1,多的那一个用来存放表头
LNode * reverse(LNode *head,LNode *root){
LNode *temp,*node;
temp= head;
while(temp!= NULL){
node = (LNode*)malloc(sizeof(LNode)+1);
node->data= temp->data;
node -> next = NULL;
node->next = root;
root = node;
temp = temp->next;
}
return root;
}
node -> next = NULL;
node->next = root;
你这个指针一会儿指空, 一会儿指root, 不错都怪了
应该是越界的缘故,读取到了未知的内存