链表的逆置

1.先建立结构体,建立链表等。然后就是让链表逆置代码:

#include "com_def.h"
#include "def.h"
typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;
LinkList Init_L(int n)
{
    LinkList L=(LinkList)malloc(sizeof(LNode));
    LinkList p=L;
    int x;
    printf("请输入链表元素:");
    for(int i=0;i<n;i++)
    {
        LinkList e=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&x);
        e->data=x;
        p->next=e;
        p=e;
    }
    p->next=NULL;
    L=L->next;    
}
void ListReverse(LinkList &L){
    LinkList p,q;
    p=L;
    L=NULL;
    while(p){
        q=p;
        p=p->next;
        q->next=L;
        L=q;
    }
}
int main()
{
    int n;
    LinkList L;
    printf("请输入链表元素个数:");
    scanf("%d",&n);
    L=Init_L(n);
    ListReverse(L);
    while(L)
    {
        printf("%d ",L->data);
        L=L->next;
    }
}

2.详解:

先让p指针指向L,L指向NULL,然后让q指针指向p,而p指向p->next;q->next指向L,最后让L指向p

posted @ 2020-10-28 19:46  ....陈陈陈陈  阅读(259)  评论(0)    收藏  举报