编程-数据结构篇

这篇博客主要探讨了编程中的数据结构问题,包括字符串移位、电话号码对应、字符串相似度计算、链表操作、约瑟夫环等。还讲解了二叉树的不同遍历方法、图的深度优先与广度优先搜索,以及哈夫曼树的应用。此外,提出了在大量数据中找出最大值的策略。
摘要由CSDN通过智能技术生成

参加九月校招准备的,代码会陆续在编译器上试运行调整。
###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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值