概念:
数据结构:所谓数据结构就是存在一定关系的数据元素的集合。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