参加九月校招准备的,代码会陆续在编译器上试运行调整。
###1. 字符串移位问题,判断S是否能被L移位得到
解: S可以由L移位得到,那么S一定在LL上,调用strstr函数即可,或者python中的in判断、find操作。
###2. 电话号码对应单词
解:构建号码对应字母的排列树,定义二维数组a[10][10]={””,””,”ABC”,”DEF”…”WXYZ”},for循环,遍历
###3. 计算字符串相似度
递归 三种情况
###4. 从无头链表中删除节点
A->B->C->D 要删除B,但是没有头指针,不能找到A
P=B
P->data=P->next->data
P->next= P->next->next
先让B等于C 然后删除C
###5. 求一个大序列中包含小序列的数情况
一般方法,遍历,两边循环,另一个方法,取第二次遍历开始点为上一次结束的点,节省多次,设置begin,end指针。
###6. 判断两个链表是否相交
A. 对第一个链表地址进行hash表映射,第二个试
B. 把第二个链表放在第一个后面,如果有环,则相交。
###7. 建立链表
#include<iostream>
#include<stdio.h>
typedef struct student{
int data;
struct student *next;
}node;
node *create(int N)
{
node *head,*p,*s;
head=(node *)malloc(sizeof(node));
p=head;
int x;
while(N--)
{
scanf("%d",&x);
s=(node *)malloc(sizeof(node));
s->data=x;
p->next=s;
p=s;
}
head=head->next;
p->next=NULL;
return head;
}
node *del1(node *head,int num)
{
node *p1,*p2;
p1=head;
while(num!=p1->data && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
if(num==p1->data)
{
if(p1==head)
{
head=p1->next;
free(p1);
}
else
p2->next=p1->next;
}
else return NULL;
}
return head;
}
int main()
{
node *p=create(10);
if(p!=NULL)
node *q=del1(p,1);