m0_58540043 2021-10-27 20:28 采纳率: 0%
浏览 42

关于#链表#的问题:建立单链表L=(1,2,3,4,5),并且逆置单链表L=(5,4,3,2,1)

建立单链表L=(1,2,3,4,5),并且逆置单链表L=(5,4,3,2,1)

  • 写回答

2条回答 默认 最新

  • 关注

    代码如下,如有帮助,请帮忙采纳一下,谢谢。

    img

    代码:

    #include <stdio.h>
    #include <stdlib.h>
    
    struct StNode 
    {
        int data;
        struct StNode* next;
    };
    
    //创建节点
    struct StNode* CreateNode(int d)
    {
        struct StNode* node = (struct StNode*)malloc(sizeof(struct StNode));;
        node->data = d;
        node->next = 0;
        return node;
    }
    //创建链表
    struct StNode* CreateList()
    {
        struct StNode* head,*p,*t;
        int data;
        head = 0;
        p = head;
        t = head;
        
        printf("创建链表,请输入链表数据:");;
        while( 1)
        {
            scanf("%d",&data);
            t = CreateNode(data);
            if(head ==0)
            {
                head = t;
                p = head;
            }
            else
            {
                p->next = t;
                p = t;
            }
            if(getchar() == '\n') break;
        }
        return head;
    }
    //打印链表
    void Display(struct StNode* head)
    {
        while(head)
        {
            printf("%d ",head->data);
            head = head->next;
        }
        printf("\n");
    }
    
    //链表逆序
    StNode* Reverse(struct StNode* head)
    {
        struct StNode *next = NULL;
        struct StNode *prev = NULL;
        while (head) 
        {
            next = head->next;
            head->next = prev;
            prev = head;
            head = next;
        }
        return prev;
    }
    
    
    
    
    int main()
    {
        struct StNode* list1 = CreateList();
        struct StNode* list2 = Reverse(list1);    
        //打印链表
        printf("逆序后的链表:");
        Display(list2);
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月27日