单链表的逆置

#include

#pragma once


//单向链表
//双向链表
//

typedef char LinkNodeType; 

typedef struct LinkNode { 
LinkNodeType data; 
struct LinkNode* next; 
    //next = NULL 结束标志    不带环
    //next = 第一个节点位置   带环
    //
    //带头结点
    //不带头节点
} LinkNode; 

LinkNode* LinkListReveser(LinkNode** head);//单链表逆置
 
#include
#include"seqlink.h"
int main()
{
    TestREVESER2();
    return 0;
}
LinkNode* LinkListReveser(LinkNode** head)
{ 
    if(head == NULL) 
    { 
        //error 
        return NULL; 
    }
    if(*head == NULL) 
    { 
        //error 
        return NULL; 
    }
    if((*head)->next == NULL)
    {
        printf("只有一个元素\n"); 
        return *head; 
    }
     LinkNode* cur = *head;
     LinkNode* Next = *head;
     LinkNode* pre = NULL; 
    while(cur) 
    {
        Next = cur->next; 
        cur->next = pre;
        pre = cur; 
        cur = Next;
    }
     *head = pre; 
     return *head;
}

void TestREVESER2()
{
    LinkNode* head;
    LinkListInit(&head);
    LinkListPushBack(&head,'a');
    LinkListPushBack(&head,'b');
    LinkListPushBack(&head,'c');
    LinkListPushBack(&head,'d');
    LinkNode* tmp = LinkListReveser(&head);
    LinkListPrintChar(tmp,"逆置");
}

 

 

 

你可能感兴趣的:(学习笔记,数据结构)