尝试着用头插法去递归反向输出链表,但是没有输出
#include <stdio.h>
#include "string.h"
#include "stdlib.h"
typedef struct node {
int data;
struct node* next;
}Node;
int main() {
struct node *newn = malloc(sizeof(struct node));
struct node *newn2 = malloc(sizeof(struct node));
newn->next = NULL;
Push(&newn, 1);
Push(&newn, 2);
Push(&newn, 3);
Push(&newn, 4);
Push(&newn, 4);
RecursiveReverse(&newn);//?
printQueue(newn);
return 0;
}
void Push(Node**headRef, int newData){
Node *head = *headRef;
struct node *newn = malloc(sizeof(struct node)); //
newn->data = newData;
newn->next = head;
head = newn;
*headRef = head;
}
void RecursiveReverse(Node**headRef){
Node* head = *headRef;
Node* newn;
newn = head;
if(newn->next !=NULL){
RecursiveReverse(&(newn->next));
}
Node* newn2 = newn;
while(newn->next != NULL){
newn = newn->next;
}
head->next =NULL;
newn->next = head;
*headRef= newn2;
}
void printQueue(Node* l){
while(l->next != NULL){//
printf("data is %d\n", l->data);
l = l->next;
}
printf("\n");
}
请问如何解决
没看到你定义的结构体代码,把代码补完整
push 函数是怎么写的
你这个push 函数有问题,变成死循环了
void Push(Node**headRef, int newData){ Node *head = *headRef; struct node *newn = malloc(sizeof(struct node)); // newn->data = newData; newn->next = head.next ; head = newn; *headRef = head; }
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632