‘壹’ 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. 入门级
针对刚入门的同学,建议不要急着去看那些经典书,像《算法导论》、《算法》这些比较经典、权威的书。虽然书很好,但看起来很费劲,如果看不完,效果会很不好。所以建议先看两本入门级的趣味书:
《大话数据结构》
《算法图解》
大话数据结构
将理论讲的很有趣,不枯燥。作者结合生活中的例子去对每个数据结构和算法进行讲解,让人通俗易懂。
算法图解
这是一本像小说一样有趣的算法入门书,书中有大量的图解,通俗易懂。
看完上面一本或两本入门级的书,你就会对数据结构和算法有个大概认识和学习。但这些入门级的书缺少细节、不够系统。所以想要深入的学习数据结构和算法,光看这两本书肯定是不够的。
2. 不同语言的教科书
国内外很多大学都是将《数据结构和算法分析》作为教科书。这本书非常系统、严谨、全面,难度适中,很适合对数据结构和算法有些了解,并且已经掌握了至少一门语言的同学学习。针对不同的语言,分别有:
《数据结构与算法分析:C语言描述》
《数据结构与算法分析:C++描述》
《数据结构与算法分析:java语言描述》
如果你不会C、C++、java,会Python或者JavaScript,可以看:
《数据结构与算法JavaScript描述》
《数据结构与算法:Python语言描述》
3. 面试书籍
现在很多大厂的面试都会考算法题,这里推荐几本面试算法书籍:
《剑指offer》
《编程珠玑》
《编程之美》
剑指offer
为面试算法量身定做的一本书。几乎包含了所有常见的、经典的面试题,如果能搞懂书里面的内容,一般公司的算法面试都应该没问题。
编程珠玑
这本书豆瓣评分有9分,评分很高。这本书最大的特色是讲了很多海量数据的处理技巧。其他算法书籍很少涉及海量数据。
编程之美
有些作者是微软工程师,算法题目较难,比较适合要面试Google、Facebook这样的公司的人去看。
4. 经典书籍
现在数据结构与算法最经典的书籍就是:
《算法导论》
《算法》
《计算机程序设计艺术》
这三本书非常经典,但都很厚,看起来比较费劲,估计很少有人能全部看完。但如果想更深入地学一遍数据结构和算法,还是建议去看看。
算法导论
章节安排不是循序渐进,里面有各种算法正确性、复杂度的证明、推导,对数学功底有一定要求,看起来有些费劲。
算法
偏重讲算法。内容不够全面,对数据结构方面的知识讲的不多,动态规划这么重要的知识点却没有讲。
计算机程序设计艺术
这本书包括很多卷,相比于其他书籍有更好的深度、广度、系统性和全面性。但如果你对数据结构和算法不是特别感兴趣,没有很好的数学、算法、计算机基础,很难把这本书读完、读懂。
5. 课外阅读
有些算法书籍也比较适合在平时悠闲的时候翻翻看看:
《算法帝国》
《数学之美》
《算法之美》
这些书都列举了大量的列子来解释说明,非常通俗易懂。