专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

逆序打印链表(递归) 逆序打印数组

ins518 2024-09-25 22:40:16 技术文章 16 ℃ 0 评论

需求描述:给出一个单链表,实现逆序打印链表(要求:不改变单链表数据结构,采用递归方式)

typedef struct LinkNode {
  	int val;
  	struct LinkNode* next;
}LinkNode;
// 创建单链表
void creatLinkList(LinkNode* head);
// 逆序打印单链表
void linkListReversePrint(LinkNode* node);
//
int main() {
  // 创建单链表
    LinkNode* head = (LinkNode*)malloc(sizeof(LinkNode));
  	if(head == NULL) {exit(-1);}
    head->next = NULL;
    LinkNode* curr = head;
    creatLinkList(curr);
    // 逆序打印单链表
    linkListReversePrint(head->next);
    printf("\n");
}
#pragma mark - 创建单链表
void creatLinkList(LinkNode* head) {
    for(int i = 0;i < 5;i++) {
        LinkNode* node = (LinkNode*)malloc(sizeof(LinkNode));
      	if(node == NULL) {exit(-1);}
        node->val = 100 * (i + 1);
        node->next = head->next;
        head->next = node;
        head = head->next;
    }
}
#pragma mark - 逆序打印链表 要求不改变单链表数据结构,使用递归实现
void linkListReversePrint(LinkNode* node)
{
    if(node != NULL)
    {
        if(node->next != NULL)
        {
            linkListReversePrint(node->next); //递归调用
        }
        printf("%d ",node->val);
    }
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表