Skip to content

Commit 4136cc0

Browse files
committed
add Test code
1 parent 1363c3f commit 4136cc0

File tree

7 files changed

+357
-47
lines changed

7 files changed

+357
-47
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 数据结构与算法 面试题(Java版)
1+
# 数据结构与算法 面试题(Java版) :four_leaf_clover:
22

33
- [单例模式的六种实现](src/review02)
44
- [二位数组中的查找](src/review03)

src/dataStructure/linkedList/LinkedList.java

Lines changed: 67 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dataStructure.linkedList;
22

3+
import java.util.Scanner;
34

45
class DATA{
56
String key;// 结点的关键字
@@ -85,7 +86,7 @@ int CLDeleteNode(CLType head, String key){ // 删除关键字结点
8586
}
8687
htemp = head;
8788
tempnode = head;
88-
while(htemp.nextNode != null){
89+
while(htemp != null){
8990
if(htemp.nodeData.key.compareTo(key)==0){ // 遍历查找
9091
tempnode.nextNode = htemp.nextNode;// 当前结点的引用指向下一个结点的引用,以此删除htemp结点
9192
return 1;
@@ -110,8 +111,8 @@ int CLLength(CLType head){ //返回结点总数
110111
void CLAllNode(CLType head){// 遍历链表输出所有数据
111112
CLType htemp;
112113
htemp = head;
113-
System.out.printf("当前链表共有%d个结点。链表所有数据如下:\n",CLLength(head));
114-
while(htemp.nextNode != null){
114+
System.out.printf("\n当前链表共有%d个结点。链表所有数据如下:\n",CLLength(head));
115+
while(htemp != null){
115116
System.out.printf("结点(%s,%s,%d)\n",htemp.nodeData.key, htemp.nodeData.name, htemp.nodeData.age);
116117
htemp = htemp.nextNode;
117118
}
@@ -124,5 +125,67 @@ void CLAllNode(CLType head){ // 遍历链表输出所有数据
124125
*
125126
*/
126127
public class LinkedList {
127-
128+
public static void main(String[] args) {
129+
CLType node,head=null;
130+
CLType CL = new CLType();
131+
String key,findkey;
132+
Scanner input = new Scanner(System.in);
133+
System.out.println("链表测试:\n先输入链表中的数据,格式为:关键字 姓名 年龄 (键入0则结束)");
134+
do{
135+
DATA nodeData = new DATA();// 构造新结点
136+
nodeData.key = input.next();
137+
if(nodeData.key.equals("0")){
138+
break;
139+
}else{
140+
nodeData.name = input.next();
141+
nodeData.age = input.nextInt();
142+
head = CL.CLAddEnd(head, nodeData);
143+
}
144+
}while(true);
145+
CL.CLAllNode(head);// 遍历所有结点
146+
147+
System.out.printf("\n演示插入结点,输入插入位置的关键字:");
148+
findkey = input.next();
149+
System.out.printf("\n输入插入结点的数据(关键字 姓名 年龄)");
150+
DATA nodeData = new DATA();// 构造新结点
151+
nodeData.key = input.next();
152+
nodeData.name = input.next();
153+
nodeData.age = input.nextInt();
154+
head = CL.CLInsertNode(head, findkey, nodeData);
155+
CL.CLAllNode(head);
156+
157+
System.out.printf("\n演示删除结点,输入要删除的关键字:");
158+
159+
key=input.next();
160+
int result = CL.CLDeleteNode(head, key);
161+
System.out.println(result==1?"删除结点成功":"删除结点失败");
162+
CL.CLAllNode(head);
163+
164+
System.out.printf("\n演示在链表中查找,输入查找关键字:");
165+
166+
key = input.next();
167+
node = CL.CLFindNode(head, key);
168+
if(node!=null){
169+
nodeData = node.nodeData;
170+
System.out.printf("关键字%s 对应的结点为(%s,%s,%d)\n",key,nodeData.key,nodeData.name,nodeData.age);
171+
}else{
172+
System.out.printf("在链表中未查找到关键字为%s的结点!\n",key);
173+
}
174+
}
128175
}
176+
177+
178+
179+
180+
181+
182+
183+
184+
185+
186+
187+
188+
189+
190+
191+

src/dataStructure/orderTable/LinearList.java

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dataStructure.orderTable;
22

3+
import java.util.Scanner;
4+
35
/*
46
* 定义数据结构模型
57
*/
@@ -79,7 +81,7 @@ DATA SLFindByNum(SLType SL, int n){ // 根据序号返回数据元素
7981
}
8082

8183
int SLFindByKey(SLType SL, String key){// 按关键字查询结点
82-
for (int i = 1; i < SL.ListLen; i++) {// 搜寻整个顺序表,返回和key匹配的结点
84+
for (int i = 1; i <= SL.ListLen; i++) {// 搜寻整个顺序表,返回和key匹配的结点
8385
if(SL.ListData[i].key.compareTo(key)==0){
8486
return i;
8587
}
@@ -104,5 +106,62 @@ int SLALL(SLType SL){ // 显示顺序表中的所有结点
104106
*/
105107
public class LinearList {
106108

107-
109+
public static void main(String[] args) {
110+
111+
int i;
112+
SLType SL = new SLType();
113+
DATA pdata;
114+
String key;
115+
System.out.println("顺序表操作演示!");
116+
117+
SL.SLInit(SL);// 初始化顺序表
118+
System.out.println("初始化顺序表完成!");
119+
120+
Scanner input = new Scanner(System.in);
121+
122+
do{
123+
System.out.println("输入添加的结点(学号 姓名 年龄):");
124+
DATA data = new DATA();
125+
data.key = input.next();
126+
data.name = input.next();
127+
data.age = input.nextInt();
128+
129+
if(data.age!=0){
130+
if(SL.SLAdd(SL, data)==0){
131+
break;
132+
}
133+
}else{
134+
break;
135+
}
136+
}while(true);
137+
System.out.println("\n 顺序表中的结点顺序为:");
138+
SL.SLALL(SL);
139+
140+
System.out.println("\n 要取出结点的序号:");
141+
i = input.nextInt();
142+
pdata = SL.SLFindByNum(SL, i);
143+
if(pdata!=null){
144+
System.out.printf("第%d个结点为:(%s,%s,%d)\n",i,pdata.key,pdata.name,pdata.age);
145+
}
146+
147+
System.out.println("\n要查找结点的关键字:");
148+
key = input.next();
149+
i=SL.SLFindByKey(SL, key);
150+
pdata=SL.SLFindByNum(SL, i);
151+
if(pdata!=null){
152+
System.out.printf("第%d个结点为:(%s,%s,%d)\n",i,pdata.key,pdata.name,pdata.age);
153+
}
154+
}
108155
}
156+
157+
158+
159+
160+
161+
162+
163+
164+
165+
166+
167+

src/dataStructure/queue/Queue.java

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dataStructure.queue;
22

3+
import java.util.Scanner;
4+
35
class DATA{
46
String name;
57
int age;
@@ -61,14 +63,13 @@ int InSQType(SQType q, DATA data){ // 入队列
6163
return 1;
6264
}
6365

64-
DATA OutSQType(SQType q, DATA data){// 出队列
65-
if(q.head==0){
66+
DATA OutSQType(SQType q){// 出队列
67+
if(q.head==q.tail){
6668
System.out.println("队列已空! 操作失败!\n");
67-
System.exit(0);
69+
return null;
6870
}else{
6971
return q.data[q.head++];// 顺序出队列,并将队首指针+1
7072
}
71-
return null;
7273
}
7374

7475
int SQTypeLen(SQType q){// 计算队列长度
@@ -85,4 +86,45 @@ int SQTypeLen(SQType q){ // 计算队列长度
8586
*/
8687
public class Queue {
8788

89+
public static void main(String[] args) {
90+
SQType st = new SQType();
91+
DATA data1;
92+
Scanner input = new Scanner(System.in);
93+
SQType stack = st.SQTypeInit();
94+
System.out.println("入队列操作:");
95+
System.out.println("输入姓名 年龄进行入队列操作,输入0 结束入队操作:");
96+
do{
97+
DATA data = new DATA();
98+
data.name=input.next();
99+
data.age=input.nextInt();
100+
if(data.name.equals("0")){
101+
break;
102+
}else{
103+
st.InSQType(stack, data);
104+
}
105+
}while(true);
106+
107+
String temp = "1";
108+
System.out.println("出队列操作:按任意非0键进行出队列操作:");
109+
temp = input.next();
110+
while(!temp.equals("0")){
111+
data1 = st.OutSQType(stack);
112+
if(data1 == null){
113+
break;
114+
}
115+
System.out.println("出队列的数据是"+data1.name+","+data1.age);
116+
temp = input.next();
117+
}
118+
System.out.println("测试结束!");
119+
st.SQTypeFree(stack);// 释放队列占用的空间
120+
}
88121
}
122+
123+
124+
125+
126+
127+
128+
129+
130+

src/dataStructure/stack/Stack.java

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dataStructure.stack;
22

3+
import java.util.Scanner;
4+
35
class DATA{
46
String name;
57
int age;
@@ -52,14 +54,14 @@ int PushST(StackType s, DATA data){ // 入栈
5254
DATA PopST(StackType s){// 出栈
5355
if(s.top==0){
5456
System.out.println("栈为空!\n");
55-
System.exit(0);
57+
return null;
5658
}
5759
return s.data[s.top--];// 元素出栈,top指针-1
5860
}
5961

6062
DATA PeekST(StackType s){// 读栈顶数据
6163
if(s.top==0){
62-
System.out.println("栈为空!\n");
64+
System.out.println("栈为空! 出栈失败!\n");
6365
System.exit(0);
6466
}
6567
return s.data[top];
@@ -74,4 +76,51 @@ DATA PeekST(StackType s){ // 读栈顶数据
7476
*/
7577
public class Stack {
7678

79+
public static void main(String[] args) {
80+
StackType st = new StackType();
81+
DATA data1 = new DATA();
82+
83+
StackType stack = st.STInit();// 初始化栈
84+
Scanner input = new Scanner(System.in);
85+
System.out.println("入栈操作:");
86+
System.out.println("输入姓名 年龄进行入栈操作,输入0 结束入栈操作:");
87+
do{
88+
DATA data = new DATA();
89+
data.name = input.next();
90+
data.age = input.nextInt();
91+
if(data.name.equals("0")){
92+
break;
93+
}else{
94+
st.PushST(stack, data);
95+
}
96+
}while(true);
97+
String temp = "1";
98+
System.out.println("出栈操作:按任意非0键进行出栈操作:");
99+
temp=input.next();
100+
while(!temp.equals("0")){
101+
data1=st.PopST(stack);
102+
if(data1==null){
103+
break;
104+
}
105+
System.out.println("出栈的数据是:"+data1.name+","+data1.age);
106+
temp=input.next();
107+
}
108+
System.out.println("测试结束!");
109+
st.STFree(st);// 释放栈所用的空间
110+
}
111+
77112
}
113+
114+
115+
116+
117+
118+
119+
120+
121+
122+
123+
124+
125+
126+

0 commit comments

Comments
 (0)