Java 实现“数据结构”中的字符串模式匹配BF算法、循环队列、链队列、顺序栈、共享栈、链栈

本文探讨了数据结构的基础概念,包括数据元素和它们的关系,并指出程序是数据结构与算法的结合。文章主要内容聚焦于Java中字符串模式匹配算法,以及循环队列、链队列、顺序栈、共享栈和链栈的实现,通过示例图辅助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念
数据结构:所谓数据结构就是存在一定关系的数据元素的集合。data-struct=(D,R),D表示数据元素,例如(a1,a2,a3,…),R表示关系,关系可以为一对一,一对多,多对多,以及相互没映射关系(也可以看做是一种关系)。所以数据结构有按照逻辑关系来则有“集合(没映射关系)”、“线性表(一对一)”、“树(一对多)”、“图(多对多)”。
程序:所谓程序就是数据结构+算法。
好了,不瞎扯些没用的了,下面是文章的正题
1.栈的示例图
这里写图片描述
2.队列的示例图
这里写图片描述
字符串模式匹配、循环队列、链队列、顺序栈、共享栈、链栈的具体实现

package sss;

/**
 * 工具类
 * <ul><li>字符串匹配<li>循环队列<li>链队列<li>顺序栈<li>共享栈<li>链栈</ul>
 * @author name:zf Email:623039066@qq.com
 *
 */
public class Tool {
   
    /**
     * 
     * <p>匹配字符串,匹配成功则返回模板的字符串的下标,未匹配到则返回0。</p>
     * <p>匹配使用的朴素匹配模式</p>
     * @param sourceStr 母字符串
     * @param targetStr 需要匹配的字符串
     * @return <b>!0</b>:匹配成功!母字符串的下标,<p><b>0</b>:未匹配成功!表示未匹配到字符串</p>
     */
    public static int matchStringBySimple(String sourceStr,String targetStr){
        int i=0,j=0;
        char [] sourceChar=new char[sourceStr.length()+1],targetChar=new char[targetStr.length()+1];
        sourceStr.getChars(0, sourceStr.length(), sourceChar, 0);
        targetStr.getChars(0, targetStr.length(), targetChar, 0);
        sourceChar[sourceChar.length-1]='\0';
        targetChar[targetChar.length-1]='\0';
        while(sourceChar[i]!='\0' && targetChar[j]!='\0'){
            if(sourceChar[i]==targetChar[j]){
                i++;j++;
            }else{
                i=i-j+1;j=0;
            }
        }
        if(targetChar[j]=='\0'){
  return i-j+1;}
        return 0;
    }


    /**
     * <p>得到循环队列
     * <P>使用的数组实现
     * @param length 循环队列的容量大小
     * @return 循环队列
     */
    public static CicleQueue getCicleQueue(int length){
        CicleQueue cicleQueue=new CicleQueue(length);
        return cicleQueue;
    }

    /**
     * <p>得到链队列
     * <P>使用的链表实现
     * @return 链队列
     */
    public static ChainQueue getChainQueue(){
        ChainQueue chainQueue=new ChainQueue();
        return chainQueue;
    }


    /**
     * <p>获取顺序栈
     * <p>使用数组实现
     * @param length 构造顺序栈的容量大小
     * @return 顺序栈
     */
    public static OrderStack getOrderStack(int length){
        OrderStack orderStack=new OrderStack(length);
        return orderStack;
    }

    /**
     * <p>获取共享栈
     * <p>使用数组实现
     * @param length 构造共享栈的容器大小
     * @return 共享栈
     */
    public static ShareStack getShareStack(int length){
        ShareStack shareStack=new ShareStack(length);
        return shareStack;
    }

    /**
     * <p>获取链栈
     * <p>使用链表实现
     * @return 链栈
     */
    public static ChainStack getChainStack(){
        ChainStack chainStack=new ChainStack();
        return chainStack;
    }
}

/**
 * 循环队列
 * @author name:zf Email:623039066
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值