10.26学习总结

(1)今日安排
链表逆置
题目要求:本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。

(2)源代码

#include <stdio.h>
#include <stdlib.h>

struct ListNode {
    int data;
    struct ListNode *next;
};

struct ListNode *createlist(); /*裁判实现,细节不表*/
struct ListNode *reverse( struct ListNode *head );
void printlist( struct ListNode *head )
{
     struct ListNode *p = head;
     while (p) {
           printf("%d ", p->data);
           p = p->next;
     }
     printf("\n");
}

int main()
{
    struct ListNode  *head;

    head = createlist();
    head = reverse(head);
    printlist(head);

    return 0;
}
struct ListNode *reverse( struct ListNode *head )
{
    struct ListNode *L=(struct ListNode*)malloc(sizeof(struct ListNode));//建立新头结点
    L->next=NULL; //L指针为空
    struct ListNode *p;
    struct ListNode *q;
    p=head;//遍历原链表
    while(p)
    {
        q=(struct ListNode*)malloc(sizeof(struct ListNode));//创建新节点
        q->data=p->data; //头插法
        q->next=L->next;
        L->next=q;
        p=p->next;
    }
    return L->next;
};
posted @ 2021-10-26 21:14  今天又双叒叕在敲代码  阅读(34)  评论(0编辑  收藏  举报