C++怎么利用递归实现单线链表的反向输出??

RT不利用递归也可以,只要是单向链表的反向输出就可以了,
2025-05-18 08:57:57
推荐回答(1个)
回答(1):

/*单向链表的反向输出*/

#include
#include

#define MAX_LEN 10

typedef struct _LINKNODE
{
int value;
struct _LINKNODE *next;
}LINKNODE;

/*链表逆置的原理就是前插,把原链表中的元素一个一个的前插到新的链表中*/
LINKNODE* revertLink(LINKNODE* head)
{
LINKNODE* revert = NULL;
LINKNODE* temp = NULL;

while(head != NULL)
{
temp = head->next;
head->next = revert;
revert = head;
head = temp;
}
return revert;
}

void main()
{
int array[MAX_LEN] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
LINKNODE* head = NULL;
LINKNODE* curNode = NULL;
LINKNODE* temp = NULL;
LINKNODE* revert = NULL;

for(int i=0; i {
temp = (LINKNODE*) malloc(sizeof(LINKNODE));
temp->value = array[i];
temp->next = NULL;

if(head == NULL)
{
head = temp;
curNode = temp;
}

curNode->next = temp;
curNode = curNode->next;
}
printf("初始化后的链表是:\n");
curNode = head;
while(curNode != NULL)
{
printf("%d ", curNode->value);
curNode = curNode->next;
}

revert = revertLink(head);

printf("\n逆置后链表是:\n");
while(revert != NULL)
{
printf("%d ", revert->value);
revert = revert->next;
}
printf("\n");
}
看看吧...