當前位置:首頁 » 操作系統 » 數據結構java源碼

數據結構java源碼

發布時間: 2023-05-19 12:55:57

java數據結構與演算法

/*給出一組數:1,4,7,10,。。。,3N+1,n為正整數 找出下一個數和第十個數
* 寫出偽代碼和Java代碼 謝謝啦*/
public static String getNumber(int number){
//定義一個初始值0
判斷如果number為0或是負數
return "您輸入的不對請輸入正整數(除0意外的自然數)";
否則就進行運算
根據算式 3*(number-1)+1進行運算
返回運算結果
}
}

public static void main(String [] args){
列印輸出
}

/*給出一組數:1,4,7,10,。。。,3N+1,n為正整數 找出下一個數和第十個數
* 寫出偽代碼和Java代碼 謝謝啦*/
public static String getNumber(int number){
int result = 0;
if(number == 0 || number < 0){
return "您輸入的不對請輸入正整數(除0意外的自然數)";
}else{
result = 3*(number-1)+1;
return ""+result;
}
}

public static void main(String [] args){
System.out.println("第五項:"+Test1.getNumber(5));
System.out.println("第十項:"+Test1.getNumber(10));
}

希望對您有幫助

❷ 求程序代碼(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游戲源碼怎麼看模型數據

從Java游戲源碼中獲取模型數據,通常需要查看游戲中的模型載入代碼。代碼中通常會使用一些開源庫或者自定義的工具類來讀取模型文件,並將讀取鋒段到的數據轉換為程序中使用的數據結構。以下是一些常用的Java模型載入庫和工具類:

1. jMonkeyEngine:jMonkeyEngine是一個開源的游戲引擎,可以用來創建Java游戲,並提供了一些用於讀取和載入3D模型的工具類。

2. LWJGL:手衫LWJGL是一個輕量級的Java游戲庫,它提供了訪問OpenGL、OpenAL和輸入設備等底層功能的介面。可以使用它來讀取和載入3D模型,並將模型數據轉換為OpenGL所需的數據格式。

3. Assimp:Assimp是一個開源的模型導入庫,支持多種模型格式,包括3D Studio Max、Collada、OBJ等。可以使用它來讀取和載入模型,並將模型數據轉換為程序中使用的數據結構。

4. 自定義工具類:如果游戲源碼沒有使用上述庫或者工具類,也可以自己編寫工具類來讀取和載入模型數據。通常需要根據模型文件格式,逐個讀取文件中的數據,並將其轉換為程序中使用的數據結構。

無論是使用開源庫還是自定義工具銀薯譽類,都需要了解模型文件的格式和結構,以正確地讀取和解析模型數據。一般來說,模型文件通常包含頂點坐標、法線、紋理坐標等信息,需要將這些信息轉換為程序中使用的數據結構,然後傳遞給OpenGL或者其他引擎進行渲染。

❹ 用java實現一個數據結構!

import java.io.IOException;
import java.util.Scanner;

public class LinkList {
private static Scanner san = new Scanner(System.in);

public static void main(String[] args) throws IOException {
List list = new List();
for (int i = 1; i <= 10; i++) {
System.out.print("請輸入第" + i + "個數: ");
list.add(san.nextInt());
list.print();
}
System.out.println("輸入的數據如下: ");
list.print();
}
}

class node {
int data;
node next = this; // 指向自己
}

class List {
private node header = new node();

// 循環鏈表的尾部添加數據
public node add(int data) {
node current = new node();
node temp = header;
while (temp.next != header)
temp = temp.next;
current.data = data;
current.next = temp.next;
temp.next = current;
return current;
}

// 查詢某個數字的位置 如果不在 返回-1;
public int search(int data) {
node temp = header;

int n = 0;
while (temp.next != header) {
temp = temp.next;
n++;
if (temp.data == data)
break;
}
if (temp.data == data)
return n;
else
return -1;
}

// 列印出整個鏈表
public void print() {
node temp = header;
while (temp.next != header) {

temp = temp.next;
System.out.print(temp.data + " ");
}
System.out.println();
}

// 插入數據
public node Insert(int pos, int data) {
node temp = header;
node current = new node();
for (int i = 0; i < pos - 1; i++) {
if (temp.next != header) {
temp = temp.next;
} else
return null;
}
current.data = data;
if (temp.next != header) {
current.next = temp.next;
}
temp.next = current;
return current;
}

// 刪除某個數據
public node del(int data) {
node temp = header;
node oldtemp = null;
node current = null;
while (temp.next != header) {
oldtemp = temp;
temp = temp.next;
if (temp.data == data) {
current = temp;
break;
}
}
if (current == header)
return null;
oldtemp.next = current.next;
return current;
}
}

❺ 關於數據結構(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數據結構 gui編程。效果圖在下面。有大神會么跪求源代碼!也不需要完全跟圖一樣。能實現功

importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;

publicclassDSExample{
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
@Overridepublicvoidrun(){
finalJFrameframe=newJFrame("Java數據結構");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

finalBoxhbox=Box.createHorizontalBox();
finalJButtonstackButton=newJButton("堆棧");
finalJButtonqueueButton=newJButton("隊列");
finalJButtonstringButton=newJButton("串");
finalJButtonrecurButton=newJButton("遞歸");
finalJButtontreeButton=newJButton("樹");
finalJButtongraphButton=newJButton("圖");
finalJButtonopButton=newJButton("數據操作");
finalJButtonexpButton=newJButton("表達式");
hbox.add(stackButton);
hbox.add(queueButton);
hbox.add(stringButton);
hbox.add(recurButton);
hbox.add(treeButton);
hbox.add(graphButton);
hbox.add(opButton);
hbox.add(expButton);

finalBoxvbox=Box.createVerticalBox();
vbox.add(newJLabel("代碼區域"));
finalJTextAreacodeArea=newJTextArea();
vbox.add(newJScrollPane(codeArea));

finalJPanelopPanel=newJPanel(newGridLayout(4,2));
finalJButtonpushButton=newJButton("數據入隊");
finalJButtonpopButton=newJButton("數據出隊");
finalJButtonheadButton=newJButton("隊頭元素");
finalJButtontailButton=newJButton("隊尾元素");
finalJTextFieldpushData=newJTextField();
finalJTextFieldpopData=newJTextField();
finalJTextFieldheadData=newJTextField();
finalJTextFieldtailData=newJTextField();
opPanel.add(pushData);
opPanel.add(pushButton);
opPanel.add(popData);
opPanel.add(popButton);
opPanel.add(headData);
opPanel.add(headButton);
opPanel.add(tailData);
opPanel.add(tailButton);
opPanel.setBorder(BorderFactory.createTitledBorder("操作"));

frame.add(hbox,BorderLayout.PAGE_START);
frame.add(opPanel,BorderLayout.LINE_END);
frame.add(vbox,BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
});
}
}

熱點內容
c語言中e的表示 發布:2025-04-23 07:12:25 瀏覽:810
活躍度演算法 發布:2025-04-23 07:10:41 瀏覽:109
資料庫系統的數據獨立性 發布:2025-04-23 06:57:55 瀏覽:584
宿州社保密碼是多少 發布:2025-04-23 06:57:50 瀏覽:364
中國十大解壓電影 發布:2025-04-23 06:13:07 瀏覽:582
產品直播腳本範文例子 發布:2025-04-23 06:10:24 瀏覽:312
安卓id加密 發布:2025-04-23 06:10:23 瀏覽:388
python行內if 發布:2025-04-23 06:10:20 瀏覽:219
ubuntu編譯32位程序 發布:2025-04-23 06:10:20 瀏覽:960
什麼在資源配置中起宏觀調控作用 發布:2025-04-23 06:05:25 瀏覽:723