导航:首页 > 编程语言 > java数据结构教程

java数据结构教程

发布时间:2023-02-05 23:26:06

‘壹’ java 数据结构

大哥,你这是数据库的问题.
你要是想用数据结构来解决的话也行,但是数据要是想长久保存的话,还是存入数据库的好。
既然学java就要有面向对象的思想。
将学生看做一个对象,建立class student.将学号,姓名,成绩做为属性。学号与姓名用String存,成绩可以用Hashtable来存,至于排序就 得把所以student对象的成绩取出来进行排序

‘贰’ 数据结构JAVA编程求教

#include<stdio.h> /* EOF(=^Z或F6),NULL */

#define FALSE 0

#define OK 1

#define ERROR 0

typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */

#define N 9 /* 数据元素个数 */

typedef char KeyType; /* 设关键字域为字符型 */

typedef struct /* 数据元素类型 */

{

KeyType key;

int weight;

}ElemType;

ElemType r[N]={{'A',1},{'B',1},{'C',2},{'D',5},{'E',3},

{'F',4},{'G',4},{'H',3},{'I',5}}; /* 数据元素(以教科书例9-1为例),全局变量 */

int sw[N+1]; /* 累计权值,全局变量 */

#define EQ(a,b) ((a)==(b))

#define LT(a,b) ((a)<(b))

typedef struct

{

ElemType *elem; /* 数据元素存储空间基址,建表时按实际长度分配,0号单元留空 */

int length; /* 表长度 */

}SSTable;

Status Creat_Seq(SSTable *ST,int n)

{ /* 操作结果: 构造一个含n个数据元素的静态顺序查找表ST(数据来自全局数组r) */

int i;

(*ST).elem=(ElemType *)calloc(n+1,sizeof(ElemType)); /* 动态生成n个数据元素空间(0号单元不用) */

if(!(*ST).elem)

return ERROR;

for(i=1;i<=n;i++)

*((*ST).elem+i)=r[i-1]; /* 将全局数组r的值依次赋给ST */

(*ST).length=n;

return OK;

}

void Ascend(SSTable *ST)

{ /* 重建静态查找表为按关键字非降序排序 */

int i,j,k;

for(i=1;i<(*ST).length;i++)

{

k=i;

(*ST).elem[0]=(*ST).elem[i]; /* 待比较值存[0]单元 */

for(j=i+1;j<=(*ST).length;j++)

if LT((*ST).elem[j].key,(*ST).elem[0].key)

{

k=j;

(*ST).elem[0]=(*ST).elem[j];

}

if(k!=i) /* 有更小的值则交换 */

{

(*ST).elem[k]=(*ST).elem[i];

(*ST).elem[i]=(*ST).elem[0];

}

}

}

Status Creat_Ord(SSTable *ST,int n)

{ /* 操作结果: 构造一个含n个数据元素的静态按关键字非降序查找表ST */

/* 数据来自全局数组r */

Status f;

f=Creat_Seq(ST,n);

if(f)

Ascend(ST);

return f;

}

Status Traverse(SSTable ST,void(*Visit)(ElemType))

{ /* 初始条件: 静态查找表ST存在,Visit()是对元素操作的应用函数 */

/* 操作结果: 按顺序对ST的每个元素调用函数Visit()一次且仅一次。 */

/* 一旦Visit()失败,则操作失败 */

ElemType *p;

int i;

p=++ST.elem; /* p指向第一个元素 */

for(i=1;i<=ST.length;i++)

Visit(*p++);

return OK;

}

typedef ElemType TElemType;

typedef struct BiTNode

{

TElemType data;

struct BiTNode *lchild,*rchild; /* 左右孩子指针 */

}BiTNode,*BiTree;

Status SecondOptimal(BiTree *T, ElemType R[],int sw[],int low,int high)

{ /* 由有序表R[low..high]及其累计权值表sw(其中sw[0]==0)递归构造 */

/* 次优查找树T。*/

int i,j;

double min,dw;

i=low;

min=fabs(sw[high]-sw[low]);

dw=sw[high]+sw[low-1];

for(j=low+1;j<=high;++j) /* 选择最小的△Pi值 */

if(fabs(dw-sw[j]-sw[j-1])<min)

{

i=j;

min=fabs(dw-sw[j]-sw[j-1]);

}

*T=(BiTree)malloc(sizeof(BiTNode));

if(!*T)

return ERROR;

(*T)->data=R[i]; /* 生成结点 */

if(i==low)

(*T)->lchild=NULL; /* 左子树空 */

else

SecondOptimal(&(*T)->lchild,R,sw,low,i-1); /* 构造左子树 */

if(i==high)

(*T)->rchild=NULL; /* 右子树空 */

else

SecondOptimal(&(*T)->rchild,R,sw,i+1,high); /* 构造右子树 */

return OK;

}

void FindSW(int sw[],SSTable ST)

{ /* 按照有序表ST中各数据元素的Weight域求累计权值表sw */

int i;

sw[0]=0;

for(i=1;i<=ST.length;i++)

sw[i]=sw[i-1]+ST.elem[i].weight;

}

typedef BiTree SOSTree; /* 次优查找树采用二叉链表的存储结构 */

Status CreateSOSTree(SOSTree *T,SSTable ST)

{ /* 由有序表ST构造一棵次优查找树T。ST的数据元素含有权域weight。*/

if(ST.length==0)

*T=NULL;

else

{

FindSW(sw,ST); /* 按照有序表ST中各数据元素的Weight域求累计权值表sw */

SecondOptimal(T,ST.elem,sw,1,ST.length);

}

return OK;

}

Status Search_SOSTree(SOSTree *T,KeyType key)

{ /* 在次优查找树T中查找关键字等于key的元素。找到则返回OK,否则返回FALSE */

while(*T) /* T非空 */

if((*T)->data.key==key)

return OK;

else if((*T)->data.key>key)

*T=(*T)->lchild;

else

*T=(*T)->rchild;

return FALSE; /* 顺序表中不存在待查元素 */

}


void print(ElemType c) /* Traverse()调用的函数 */

{

printf("(%c %d) ",c.key,c.weight);

}

void main()

{

SSTable st;

SOSTree t;

Status i;

KeyType s;

Creat_Ord(&st,N); /* 由全局数组产生非降序静态查找表st */

Traverse(st,print);

CreateSOSTree(&t,st); /* 由有序表构造一棵次优查找树 */

printf(" 请输入待查找的字符: ");

scanf("%c",&s);

i=Search_SOSTree(&t,s);

if(i)

printf("%c的权值是%d ",s,t->data.weight);

else

printf("表中不存在此字符 ");

}

运行结果:

这个是数据结构上的一个源码,你用这个自己改一改试试吧

‘叁’ JAVA数据结构

public class CallNotes {

String name;
String phoneNumber;
static Map<String,String> noteMap=null;
static List<CallLog> logList=null;

CallNotes(){
this.noteMap = new HashMap<String,String>();
this.logList = new ArrayList<CallLog>();
}

void addRecord(String name,String number){
noteMap.put(name,number);
}
void removeRecord(String name){
noteMap.remove(name);
}

String searchPhoneNumber(String name){
String number=null;
number = noteMap.get(name);
logList.add(new CallLog(name, number, new Date()));
return number;
}
void outputCallLog(CallLog log){
if(log==null) return ;
log.outputLog();
}

class CallLog{
String name;
String number;
Date date;
CallLog(String name,String num,Date date) {
this.name=name;
this.number=num;
this.date=date;
}
void outputLog(){
System.out.println("name:"+this.name);
System.out.println("number:"+this.number);
System.out.println("date:"+this.date);
}
}
}
用HashMap实现可以吗?

‘肆’ 求JAVA.数据结构.算法学习视频百度云。

《数据结构课程精讲教案合集-复旦大学(共计1061页).pdf 》网络网盘免费资源下载

链接: https://pan..com/s/15uwjtHgKKzZdheWFQC21pQ

?pwd=abzc 提取码: abzc

‘伍’ 数据结构 java

应该是char
public void outprint( ) { // 本方法调用后输出的结果是什么?
Queue Q=new Queue();
String x=”e” , y=”c”;
Q. enqueue (“h”);
Q. enqueue (“r”);
Q. enqueue (y); //到此,Q中元素:'h'、'r'、'c'
x=(String)Q. dequeue (); //'h'出去,x='h',Q中元素:'r'、'c';
Q. enqueue (x); //x进去,Q中元素:'r'、'c'、'h
x=(String)Q. dequeue (); //'r'出去,x='r',Q中元素:'c'、'h'
Q. enqueue (“a”); //'a'进去,Q中元素:'c'、'h'、'a'
while(!Q.isEmpty()){
y =(String)Q. dequeue ();
System.out.print(y); } //所以,while循环应打印出cha
System.out.println(x); //x='r',最终输出char
}

‘陆’ java如何表示数据结构

一、List接口,有序的Collection接口,精确地控制每个元素插入的位置,允许有相同的元素
1.链表,LinkedList实现了List接口,允许null元素,提供了get()、remove()、insert()方法。
[java] view plain
public void add() {
LinkedList List = new LinkedList();
List.add("link1");
List.add("link2");
List.add("link3");
Iterator it = List.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
it.remove();
Iterator it1 = List.iterator();
for (int i = 0; i < List.size(); i++) {
System.out.println(it1.next());
}
}

2.数组列表,ArrayList,可以动态变化容量的数组,数组列表中存放Object类型,在数组列表中存放的对象类型,以其原型的父类代替,提取其中的元素时要进行类型转换
[java] view plain
public static void main(String[] args)
{
ArrayList al=new ArrayList();
al.add("name");
al.add("value");
al.add("number");
for(int i=0;i<al.size();i++)
{
System.out.println(al.get(i));
}
}

二、Set接口,不包含重复元素的Collection接口
1.散列集,HashSet,实现了Set接口,非线性同步与链表和数组列表几乎类似,处理时链表进行数据处理花费时间更短,处理大数据时通常使用散列集
[java] view plain
public static void main(String[] args)
{
long time=0;
HashSet hs=new HashSet();
ArrayList al=new ArrayList();
long starttime=System.currentTimeMillis();
for(int i=0;i<10000;i++)
{
hs.add(new Integer(i));
}
System.out.println(System.currentTimeMillis()-starttime);
for(int i=0;i<10000;i++)
{
al.add(new Integer(i));
}
System.out.println(System.currentTimeMillis()-starttime);
}

2.树集,TreeSet,实现了Set接口,实现了排序功能,集合中的元素默认按升序排列元素。
三、Map接口,没有继承Collection接口,其提供key到value的映射,Map中不能包含相同的key,每个key只能映射一个value。
1.散列表类,HashTable,继承了Map接口,非空(non-null)的对象都可作为key或value,特点:无序的可以快速查找特定的元素

[java] view plain
public static void TableTest(){
Hashtable ht = new Hashtable();
ht.put("key1", "value1");
ht.put("key2", "value2");
String value1=(String)ht.get("key2");
System.out.println(value1);
}

2.散列映射类,HashMap,与HashTable类似,HashMap是异步的,且允许null

[java] view plain
public static void Maptest(){
Map<string string=""> map=new HashMap<string string="">();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
for(Map.Entry<string string=""> entry:map.entrySet()){
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
String value1=(String)map.get("key1");
System.out.println(value1);
}
</string></string></string>

‘柒’ 郝斌老师的java 数据结构视频教程

10《数据结构》【005】

链接:https://pan..com/s/1jHDInT5qZOnvIZPjyVHOBQ

提取码:2r91 复制这段内容后打开网络网盘手机APP,操作更方便哦!

若资源有问题欢迎追问~

‘捌’ 求一本用Java语言描述的数据结构与算法的入门书籍

1,数据结构与算法分析(Java版高等院校计算机应用技术系列教材) 王世民
清华大学出版社 (2005-07出版)
这本书最合适了,原价才22元。
http://www.amazon.cn/mn/detailApp?qid=1204378864&ref=SR&sr=1-8&uid=168-3893319-5388224&prodid=zjbk191118

2,
数据结构--Java语言描述(高等学校教材计算机科学与技术) 朱战立
清华大学出版社 (2005-12出版)
这本没有上一本好,开始讲了太多无关的东西。原价为25元。
http://www.amazon.cn/mn/detailApp?qid=1204378864&ref=SR&sr=1-9&uid=168-3893319-5388224&prodid=zjbk235595

以上两本都还可以,比较浅显易懂,还有一些别的书,但都不太适合入门。

‘玖’ java数据结构书籍推荐

1. 入门级

针对刚入门的同学,建议不要急着去看那些经典书,像《算法导论》、《算法》这些比较经典、权威的书。虽然书很好,但看起来很费劲,如果看不完,效果会很不好。所以建议先看两本入门级的趣味书:

阅读全文

与java数据结构教程相关的资料

热点内容
服务器主机长什么样 浏览:26
刷脸支付软件开发源码 浏览:803
python切片和list下标 浏览:604
解压软件电脑版哪个好免费 浏览:676
rabbitmqphp安装 浏览:865
excel的图片怎么放到文件夹 浏览:116
无线模块单片机 浏览:246
oracle创建实例命令 浏览:936
行银易贷app是什么平台 浏览:788
方舟手机版如何创建非官方服务器 浏览:304
php连接mysql的方法 浏览:401
刘洪波pdf 浏览:97
python每日一练2 浏览:553
方舟私人服务器怎么改管理密码 浏览:500
卡盟系统官网php源码 浏览:344
源码网比别的便宜 浏览:686
黄煌pdf 浏览:435
判断一个数是否为质数python代码 浏览:94
接上峰命令 浏览:312
泡果奶源码 浏览:92