第二章 线性表
链表常考的问题
一、逆序
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