导航:首页 > 源码编译 > java数据结构和算法代码

java数据结构和算法代码

发布时间:2022-11-28 17:50:21

‘壹’ 《数据结构与算法分析java语言描述(英文版·第3版)》pdf下载在线阅读,求百度网盘云资源

《数据结构与算法分析》(韦斯 (Mark Allen Weiss))电子书网盘下载免费在线阅读

资源链接:

链接:

提取码:yu5y

书名:数据结构与算法分析

作者:韦斯 (Mark Allen Weiss)

出版社:机械工业出版社

出版年份:2013-2-1

页数:614

内容简介:

本书是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。

随着计算机速度的不断增加和功能的日益强大,人们对有效编程和算法分析的要求也不断增长。本书将算法分析与最有效率的Java程序的开发有机地结合起来,深入分析每种算法,并细致讲解精心构造程序的方法,内容全面、缜密严格。

第3版的主要更新如下:

 第4章包含AVL树删除算法的实现。

 第5章进行了全面修订和扩充,现在包含两种较新的算法—cuckoo散列和hopscotch散列。

 第7章包含基数排序的相关内容,并给出了下界证明。

 第12章增加了后缀树和后缀数组的相关材料,包括Karkkainen和Sanders的线性时间后缀数组构造算法。

 更新书中的代码,使用了Java 7中的菱形运算符。

作者简介:

Mark Allen Weiss佛罗里达国际大学计算与信息科学学院教授、副院长,本科教育主任和研究生教育主任。他于1987年获得普林斯顿大学计算机科学博士学位,师从Bob Sedgewick。 他曾经担任全美AP(Advanced Placement)考试计算机学科委员会的主席(2000—2004)。他的主要研究兴趣是数据结构、算法和教育学。

‘贰’ 关于数据结构(java)的一个代码

描述栈抽象数据类型的SStack接口的声明
public interfaceSStack<E> //栈接口
{
boolean isEmpty(); //判断是否空栈,若空栈返回true
boolean push(E element); //元素element入栈,若操作成功返回true
E pop(); //出栈,返回当前栈顶元素,若栈空返回null
E get(); //取栈顶元素值,未出栈,若栈空返回null
}
顺序栈类具体操作方法的声明:

importdataStructure.linearList.SStack;

public classSeqStack<E> implements SStack<E>
//顺序栈类

{
private Object value[]; //存储栈的数据元素
private int top; //top为栈顶元素下标

public SeqStack(int capacity) //构造指定容量的空栈
{
this.value = newObject[Math.abs(capacity)];
this.top=-1;
}
public SeqStack() //构造默认容量的空栈
{
this(10);
}

public boolean isEmpty() //判断是否空栈,若空栈返回true
{
return this.top==-1;
}

public boolean push(E element) //元素element入栈,若操作成功返回true
{
if (element==null)
return false; //空对象(null)不能入栈

if (this.top==value.length-1) //若栈满,则扩充容量
{
Object[] temp = this.value;
this.value = newObject[temp.length*2];
for (int i=0; i<temp.length;i++)
this.value[i] = temp[i];
}
this.top++;
this.value[this.top] = element;
return true;
}

public E pop() //出栈,返回当前栈顶元素,若栈空返回null
{
if (!isEmpty())
return (E)this.value[this.top--];
else
return null;
}

public E get() //取栈顶元素值,未出栈,栈顶元素未改变
{
if (!isEmpty())
return (E)this.value[this.top];
else
return null;
}

public String toString() //返回栈中各元素的字符串描述
{
String str="{";
if (this.top!=-1)
str +=this.value[this.top].toString();
for (int i=this.top-1; i>=0; i--)
str += ","+this.value[i].toString();
return str+"} ";
}
实例引用public static void main(String args[])
{
SeqStack<String> stack = newSeqStack<String>(20);
System.out.print("Push: ");
char ch='a';
for(int i=0;i<5;i++)
{
String str =(char)(ch+i)+"";
stack.push(str);
System.out.print(str+" ");
}
System.out.println("\n"+stack.toString());

System.out.print("Pop : ");
while(!stack.isEmpty()) //全部出栈
System.out.print(stack.pop().toString()+" ");
System.out.println();
}

‘叁’ java(树的内容)算法与数据结构

其实有两种方式:
第一种就是递归 就像现在比较老的树形菜单。这种方式应该string类型应该是存不了的。就是自定义一个类型A 里面有一个成员变量 list<A>。 这种结构就是list里面嵌套list,你有多少级就有多少层。
第二种其实要做处理,就是把原数据按一定规则排序放到一个list里面,这里面不会再嵌套list。list排完序就如你的效果图一样。第一个 一级节点 》》其子节点;然后第二个一级节点》》其子节点,etc。 但是这种结构要有存的时候要循环一遍排成上述的顺序,取的时候还需要判断哪个是下一个不同级节点的开始。

js前台展示比较简单,根据父id直接添加就行了,原数据什么都不用做。但是java里这种方式不行。

‘肆’ 算法 数据结构编程(java语言)

private void sort(int[] list)
{
int[] sortlist=new int[21];
for(int i=1;i<=20;i++)
sortlist[i]=-1;
for(int i=0;i<list.Length;i++)
{
sortlist[list[i]]=list[i];
}
for(int i=0;i<sortlist.Length;i++)
{
if(sortlist[i]!=-1)
{
输出sortlist[i];
}
}
因为已知最大值,所以遍历算法计算次数为常数,所以算法复杂度为1

‘伍’ 求程序代码(java版的数据结构)

3个class,运行UI.java。
******
public class CircuitException extends Exception {public CircuitException(){}}
*****
import java.util.LinkedList;
public class GPS {
public static final int MAX = 65535;
public GPS(int maxSize){
graph = new Graph(maxSize);
}
public GPS(){
graph = new Graph();
}
public Graph graph;
public static void main(String args[]){
GPS gps = new GPS();
try {
gps.graph.addEdge("a", "b", 1);
gps.graph.addEdge("a", "c", 1);
gps.graph.addEdge("b","d" , 1);
gps.graph.addEdge("c","d" , 1);
gps.graph.addEdge("d","e" , 1);
gps.graph.addEdge("d","f" , 1);
gps.graph.addEdge("e","t" , 2);
gps.graph.addEdge("f","t" , 1);
LinkedList list = gps.graph.getPath("a", "d");
for(int i = 0 ; i < list.size() ; i++){
System.out.print(list.get(i));

}System.out.println();
} catch (CircuitException e) {
System.out.println("出现了自环!");
}
gps.graph.showGraph();
System.out.println(gps.graph.gap);
}
public class Graph{
public int Zuida = 50;
public int chang = 0;
public Jiao[] vertex;
public double gap;
public Graph(){
vertex = new Jiao[Zuida];
}
public Graph(int maxSize){
this.Zuida = maxSize;
vertex = new Jiao[maxSize];
}
public void addVertex(String name){
vertex[chang++] = new Jiao(name);
}
public void addEdge(String v1, String v2,double edge) throws CircuitException{
//先找到v1;
if(v1.equals(v2))
throw new CircuitException();
Jiao from = null;
Jiao to = null;
for(int i = 0 ; i < chang ; i++){
if(vertex[i].name.equals(v1)){
from = vertex[i];
}else if(vertex[i].name.equals(v2)){
to = vertex[i];
}
}
if(from == null){
this.addVertex(v1);
from = this.vertex[chang-1];
}
if(to == null){
this.addVertex(v2);
to = this.vertex[chang-1];
}//已经找到v1和v2;
//没有检测是否v1 v2边已经存在!
//加入边。
Jiao v1adj = new Jiao(v2);
v1adj.edge = edge;
Jiao v2adj = new Jiao(v1);
v2adj.edge = edge;
//添加联系
//检查联系是否已经存在
Jiao temp = from;
while(temp.next!=null){
Jiao temppar = temp;
temp = temp.next;
if(temp.name.equals(v1adj.name)){
temppar.next = temp.next;
}
}
v1adj.next = from.next;
from.next = v1adj;
//v2adj.next = to.next;
//to.next = v2adj;
}
//假设要找的必然存在,不用想是否不在
public LinkedList getPath(String v1 ,String v2){
int count = 0;
//System.out.println(count++);
boolean found[] = new boolean[chang];
double distance[] = new double[chang];
int to = 0;
Jiao from = null;
for(int i = 0 ; i < chang ; i++){
found[i] = false;
distance[i] = MAX;
}
for(int i = 0 ; i < chang ; i++){
if(vertex[i].name.equals(v1)){//找到始发地
from = vertex[i];
distance[i] = 0;
found[i] = true;
//System.out.println(count++);
}
if(vertex[i].name.equals(v2)){//找到目的地
to = i;
//System.out.println(count++);
}
}
//必须先准备好路径!
Jiao forCount = from;
int degree = 0;
while(forCount!=null){
degree++;
forCount=forCount.next;
}
LinkedList[] list = new LinkedList[degree];
int [] mark = new int[degree];
for(int i = 0 ; i < degree ; i++){
list[i]=new LinkedList();
mark[i]=MAX;
}
int test=0;
int count2 = 0;
int count3 = 0;
//System.out.println(count+++"xx");
while(!found[to]&&test++<100){
//System.out.println(count+++"FIRST");

//开始时from到所有都是最大值。
//找到标记了的节点
//找标记了的节点邻接的未标记的节点。
//得到最短的边,并标记。
//更新现有路径
double min = MAX;
int address = -1;
int father = -1;
for(int i = 0 ; i < chang ; i++){//对于已经找到的顶点寻找最小的往后的距离。
if(found[i]){//找到了的。
Jiao temp = vertex[i];
while(temp!=null){//vertex的邻接顶点~~

//先看temp的号码~
int tempNumber = -1;
for(int j = 0 ; j < chang ; j++){
if(vertex[j].name.equals(temp.name)){
tempNumber = j;
break;
}
}
if(!found[tempNumber]){//如果是还没有找到的~
double dist = distance[i]+temp.edge;
if(dist < min){
min = dist;
father = i;
//System.out.println(" "+min);
address = tempNumber;
}
}
temp = temp.next;
}

}

}found[address] = true;
distance[address] = min;
//添加到已有路径中去!
//知道father
for(int i = 0 ; i < degree ; i++){
if(list[i].isEmpty()||list[i].getLast().equals(vertex[father].name)){
list[i].addLast(vertex[address].name);
break;
}
}
}
for(int i = 0 ; i < degree ; i++){
if(list[i].isEmpty())
continue;
else{
if(list[i].getLast().equals(v2)){
gap=0;
//先求出gap
Jiao pre = from;
Jiao nex = null;
for(int j = 0 ; j < list[i].size() ; j++){
for(int k = 0 ; k < chang ; k++){
if(vertex[k].name.equals(list[i].get(j))){
nex = vertex[k];break;
}
}

while(pre.next!=null){//找到下一个的长度
pre = pre.next;
//System.out.println(nex.name +"nex.name");
if(pre.name.equals(nex.name)){
gap+=pre.edge;
//System.out.println(" gap2 "+gap);
}
}
pre = nex;
}
//System.out.println(gap+"gap");
return list[i];
}
}
}
return null;
}
public void showGraph(){
Jiao temp;
for(int i = 0 ; i < chang ; i++){
temp = vertex[i];
while(temp!=null){
System.out.print(temp.name+temp.edge+" ");
temp = temp.next;
}System.out.println();
}System.out.println("Show Over!");
}
}

public class Jiao{
public String name;
public Jiao next = null;
public double edge;
public Jiao(String name){
this.name = name;
}
}
}
******
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import javax.swing.JButton;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class UI extends JFrame implements ActionListener{

private JTextField textField_5;
private JTextField textField_4;
private JList list_1;
private JList list;
private JTextField textField_1;
private JTextField textField_3;
private JTextField textField_2;
private JTextField textField;
private DefaultListModel model = new DefaultListModel();
private DefaultListModel model_1 = new DefaultListModel();
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UI frame = new UI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame
*/
public UI() {
super();
setTitle("GPS寻路");
getContentPane().setLayout(null);
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(11, 36, 221, 193);
getContentPane().add(scrollPane);

list = new JList(model);
scrollPane.setViewportView(list);

final JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(253, 36, 218, 193);
getContentPane().add(scrollPane_1);

list_1 = new JList(model_1);
scrollPane_1.setViewportView(list_1);

final JLabel label = new JLabel();
label.setText("从");
label.setBounds(10, 249, 24, 18);
getContentPane().add(label);

final JLabel label_1 = new JLabel();
label_1.setText("到");
label_1.setBounds(11, 273, 24, 18);
getContentPane().add(label_1);

textField = new JTextField();
textField.setBounds(50, 247, 103, 22);
getContentPane().add(textField);

textField_2 = new JTextField();
textField_2.setBounds(50, 271, 103, 22);
getContentPane().add(textField_2);

final JLabel label_2 = new JLabel();
label_2.setText("距离");
label_2.setBounds(11, 297, 37, 18);
getContentPane().add(label_2);

textField_3 = new JTextField();
textField_3.setBounds(50, 295, 103, 22);
getContentPane().add(textField_3);

final JButton button = new JButton();
button.setText("添加");
button.setBounds(155, 250, 73, 28);
getContentPane().add(button);

final JButton button_1 = new JButton();
button_1.setText("删除");
button_1.setBounds(155, 285, 73, 28);
getContentPane().add(button_1);

final JLabel label_3 = new JLabel();
label_3.setText("距离:");
label_3.setBounds(253, 297, 39, 18);
getContentPane().add(label_3);

textField_1 = new JTextField();
textField_1.setBounds(293, 295, 86, 22);
getContentPane().add(textField_1);

final JButton button_2 = new JButton();
button_2.setText("显示路径");
button_2.setBounds(385, 249, 86, 68);
getContentPane().add(button_2);

final JLabel label_4 = new JLabel();
label_4.setText("路径表示");
label_4.setBounds(11, 10, 66, 18);
getContentPane().add(label_4);

final JLabel label_5 = new JLabel();
label_5.setText("最佳路径");
label_5.setBounds(253, 12, 66, 18);
getContentPane().add(label_5);
//
button.addActionListener(this);
button_1.addActionListener(this);
button_2.addActionListener(this);

final JLabel label_6 = new JLabel();
label_6.setText("从");
label_6.setBounds(253, 249, 24, 18);
getContentPane().add(label_6);

textField_4 = new JTextField();
textField_4.setBounds(293, 247, 86, 22);
getContentPane().add(textField_4);

final JLabel label_7 = new JLabel();
label_7.setText("到");
label_7.setBounds(253, 273, 24, 18);
getContentPane().add(label_7);

textField_5 = new JTextField();
textField_5.setBounds(293, 271, 86, 22);
getContentPane().add(textField_5);

final JSeparator separator = new JSeparator();
separator.setOrientation(SwingConstants.VERTICAL);
separator.setBounds(239, 10, 8, 317);
getContentPane().add(separator);
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand().equals("添加")){

try{String from = textField.getText();
String to = textField_2.getText();
if(from.equals(to)){
JOptionPane.showMessageDialog(null, "始点与终点不能相同");
return;
}
if(from.equals("")||to.equals("")){
JOptionPane.showMessageDialog(null, "添加不能为空");
return;
}for(int i = 0 ; i < model.size() ; i ++){
if(model.get(i).toString().substring(0, model.get(i).toString().indexOf(":")).equals(
from+"->"+to))
model.remove(i);
}
double length = Double.parseDouble(textField_3.getText());
model.addElement(from+"->"+to+": "+length);

}catch(Exception e1){
JOptionPane.showMessageDialog(null, "距离为数字值");
}
}
if(e.getActionCommand().equals("删除")){
for(int i = 0 ; i < model.size() ; i++){
if(list.isSelectedIndex(i))
model.remove(i);
}
}
if(e.getActionCommand().equals("显示路径")){
try{
model_1.removeAllElements();
GPS gps = new GPS();
String full,from,to;
double length;
for(int i = 0 ; i < model.size() ; i++){
full = model.get(i).toString();
from = full.substring(0,full.indexOf("-"));
to = full.substring(full.indexOf("-")+2,full.lastIndexOf(":"));
length = Double.parseDouble(full.substring(full.indexOf(":")+1, full.length()-1));
//System.out.println(from);
//System.out.println(to);
try {
gps.graph.addEdge(from, to, length);
System.out.println(from +" "+ to);
} catch (CircuitException e1) {
System.out.println("有环存在");
}
}LinkedList list = gps.graph.getPath(textField_4.getText(), textField_5.getText());
model_1.addElement(textField_4.getText());
for(int i = 0 ; i < list.size() ; i++){
model_1.addElement(list.get(i));
}//计算路径长度
textField_1.setText(""+gps.graph.gap);
}catch(Exception e1){
JOptionPane.showMessageDialog(null, "没有找到有关节点");
}
}
}
}

‘陆’ JAVA数据结构与算法

给你写了答案如下,有问题再追问。

  1. B

  2. A

  3. C

  4. 确切性

  5. 3

  6. infexOf

  7. 队头指针指向队尾

  8. 顺序表:查找方便,但插入困难;

    链表:查找困难,但插入方便。

  9. //最大值
    publicstaticintgetMax(intn,int[]arr){//n是数组最后一个元素的index
    if(n==0)
    returnarr[0];
    if(arr[n]>getMax(n-1,arr))
    returnarr[n];
    returngetMax(n-1,arr);
    }
    //平均值
    publicstaticintgetAverage(intn,int[]arr){//n是数组最后一个元素的index
    if(n==1)
    returnarr[0];
    return(arr[n]+getAverage(n-1,arr)*(n-1))/n;
    }
  10. //删除节点
    publicstaticNodermNode(Nodehead,Nodenode){
    Nodetemp=head;
    while(temp.next!=null){
    if(temp.next==node){
    temp.next=node.next;
    break;
    }
    else
    temp=temp.next;
    }
    returnhead;
    }
    //数组元素逆置
    publicstaticint[]inverseArray(int[]arr){
    intstart=0;
    intend=arr.length-1;

    for(;start<arr.length/2;start++,end--){
    inttemp=arr[start];
    arr[start]=arr[end];
    arr[end]=temp;
    }
    returnarr;

‘柒’ java数据结构和算法

首先看存储方式, 这个list, 只保存一个link的引用, 作为链表的头, 然后通过这个头.next, 得到第二个, 第二个.next得到第三个, 一次类推, 知道.next == null 的时候, 说明list结束.

那么现在分两种情况看:
1. 当当前链表里面没有元素的时候, 那么就添加一个, 然后让它的next = first, 也就是为null, 那么链表在遍历的时候, 访问了第一个, 然后第一个.next == null, 链表就到头了.

2.当当前链表里面有元素的时候, 那么因为方法叫做firstinsert, 也就是添加头元素, 所以先声明一个link = newlink, 然后让newlink, 的next 指向之前list.first素, 那么现在newlink就变成了第一个, 而之前那个变成了第二个, 然后再把newlink的引用赋给first, 这样, 链表的头就变成了newlink, 达到了first insert的目的.

first的引用就是我上面分析的两种情况, 一种是没有元素就是null, 另一种情况是有, 变成了第二个, 因为这个list要有结束的位置, 否则就无限长了, 结束的条件就是遍历list的时候, 最后一个元素.next == null, 这样list就停住了我大体画个图吧, 你看看:

第一种情况: 当队列中没有元素的时候
列表中什么都没有 : [ (head)null ]
有一个newlink {nl}
执行完newlink.next=first; {nl} -> null
执行完first=newlink; [ (head){nl} -> null ];
这样list的头就是newlist, 只有它一个元素.

第二中情况: 当队列中有元素的时候:
假设当前头元素为{oldhead}
[ (head){oldhead} -> {obj1} -> {obj2} ... {objn} -> null]
有一个newlink {nl}
执行完newlink.next=first; {nl} -> {oldhead}
执行完first=newlink; [ (head){nl} -> {oldhead} -> {obj1} -> {obj2} ... {objn} -> null]
这样list的头就是newlist, 而oldhead就变成了第二个元素, 后面的元素以此类推.

‘捌’ Java数据结构与算法有哪些

《Java数据结构和算法》(第2版)介绍了计算机编程中使用的数据结构和算法,对于在计算机应用中如何操作和管理数据以取得最优性能提供了深入浅出的讲解。全书共分为15章,分别讲述了基本概念、数组、简单排序、堆和队列、链表、递归、进阶排序、二叉树、红黑树、哈希表及图形等知识。附录中则提供了运行专题Applet和例程、相关书籍和问题解答。《Java数据结构和算法》(第2版)提供了学完一门编程语言后进一步需要知道的知识。本书所涵盖的内容通常作为大学或学院中计算机系二年级的课程,在学生掌握了编程的基础后才开始本书的学习。

‘玖’ Java 与 算法+数据结构 (100分)

说数据结构没用那是不可能的,但是要看你做什么了。

比如说你要血java,如果你想搞网站方面的话就简单了。

数据结构基本可以不用学,因为在web应用中,能用到的算法的地方少之又少,几乎就那么几个,想记不住都难。

但是如果你要往软件方面和手软方面发展的话就要学一部分了,但是这东西学是学不到的,能学到的只不过是思路,到时候自己发挥一下,想个算法就行了,算法这东西说难不难,难的东西有,但是没有你能用到的。

像你这样的情况我想说两点:

首先,说你想从事算法类的工作,那么选择什么样的语言都是一样的,算法肯定有,但是用到的都不多。刚进公司的时候一般是用不到算法的,因为算法都是别人想的,你也许有好的算法,但是别人不一定采用,但是你的算法基础不要丢掉,因为等你当了项目经理后这个是必不可少的。

其次,你要知道,在学计算机的路上,很少有人能学什么就做什么,大家都在被社会潮流推动,想要不掉队就只能随波逐流。因为毕竟我们都不想一辈子写代码。大家都是拿这东西做个跳板。

学java的路很长,但是也很有趣,希望你能学好。我想以你的算法基础,以后想成为专业精英不是问题。加油吧。

‘拾’ java冒泡排序法代码

冒泡排序是比较经典的排序算法。代码如下:

for(int i=1;i<arr.length;i++){

for(int j=1;j<arr.length-i;j++){

//交换位置

}

拓展资料:

原理:比较两个相邻的元素,将值大的元素交换至右端。

思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。

第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;

第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;

依次类推,每一趟比较次数-1;

……

举例说明:要排序数组:int[]arr={6,3,8,2,9,1};

for(int i=1;i<arr.length;i++){

for(int j=1;j<arr.length-i;j++){

//交换位置

}

阅读全文

与java数据结构和算法代码相关的资料

热点内容
服务器开不了机怎么把数据弄出来 浏览:958
gif动态图片怎么压缩 浏览:517
黑猴子棒球压缩文件解压密码 浏览:627
如何让app适应不同的手机屏幕大小 浏览:8
苹果手机如何给安卓手机分享软件 浏览:759
苹果电脑怎么运行腾讯云服务器 浏览:59
明日之后沙石堡命令助手 浏览:261
蛋糕店用什么样的app 浏览:877
长安银行信用卡app怎么取现 浏览:635
dos命令cmd命令的 浏览:226
阿里云存档视频文件的服务器 浏览:194
ftp修改文件权限命令 浏览:491
周易八卦梅花算法 浏览:676
java组织机构 浏览:953
h5大转盘游戏源码 浏览:592
学校服务器地址查询 浏览:109
pythontutorial下载 浏览:524
pythonswampy示例 浏览:95
有没有什么语音讲书看书的app 浏览:995
文件夹怎么做标题 浏览:33