第二章 线性表

链表常考的问题

一、逆序

1、迭代法:头插到新链表中

 

 

其中List结构定义如下:

typedef struct Node *PtrToNode;
struct Node {
    ElementType Data; /* 存储结点数据 */
    PtrToNode   Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */




List Reverse(List L){
    List *new_head ;
    List head = L;
    while(head){
        List *next = head->Next;//备份头节点的下一个节点的指针
        head->Next = new_head;//头插法插入新链表
        new_head = head;//新链表中指向链头
        head = next;//旧链表中head指向链头
    }
    return new_head;

}


int main()
{
    List L1, L2;
    L1 = Read();
    L2 = Reverse(L1);
    Print(L1);
    Print(L2);
    return 0;
}

 

 

 2、递归法

 

 

 

 

 二、模式匹配 KMP

 

 

 

 

 

 

 

 

 

 

posted @ 2019-11-11 15:01  kilig  阅读(118)  评论(0编辑  收藏  举报