PAT的链表题还算比较友好 ,大多用静态链表
在储存单词时,我们可以使用链表逐个字母进行储存。
为了节约空间,如果两个单词拥有共同的后缀,那么可以让它们共享一个相同的子链表。
例如,loading
和 being
可以如下图所示储存:
你需要找到共同后缀的起始位置。(对于上图,即为 ii 的位置)
#include<bits/stdc++.h>
#define rep(i,a,n) for(int i=a;i<n;i++)
#define INF 0x3f3f3f3f
#define ll long long
using namespace std;
const int N=1e5+233;
struct node {
char data;
int next;
}a[N];
int vis[N];
int main(){
int head,head1,n;
cin>>head>>head1>>n;
rep(i,0,n){
int id;
cin>>id;
cin>>a