Skip to content

Commit 2069f78

Browse files
committed
update
1 parent 1683bca commit 2069f78

File tree

4 files changed

+44
-44
lines changed

4 files changed

+44
-44
lines changed

src/dataStructure/linkedList/README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
准备在 链表操作中需要用到的变量及类。
1717
```java
1818
class DATA{
19-
String key; // 结点的关键字
19+
String key; // 结点的关键字
2020
String name;
2121
int age;
2222
}
@@ -44,7 +44,7 @@ CLType CLAddEnd(CLType head, DATA nodeData){
4444
System.out.println("申请内存失败!\n");
4545
return null;
4646
}else{
47-
node.nodeData = nodeData; // 在新申请的结点中保存数据
47+
node.nodeData = nodeData; // 在新申请的结点中保存数据
4848
node.nextNode = null; // 设置结点引用为空,即为表尾
4949
if(head == null){ // 当head为空时,加入的新结点即为头引用
5050
head = node;
@@ -73,7 +73,7 @@ CLType CLAddFirst(CLType head, DATA nodeData){
7373
System.out.println("申请内存失败!\n");
7474
return null;
7575
}else{
76-
node.nodeData = nodeData; // 保存数据
76+
node.nodeData = nodeData; // 保存数据
7777
node.nextNode = head; // 新加入的头结点的nextNode指向头引用所指的结点
7878
head = node; // 头引用指向新节点
7979
return head;
@@ -86,7 +86,7 @@ CLType CLAddFirst(CLType head, DATA nodeData){
8686
CLType CLFindNode(CLType head, String key){
8787
CLType htemp;
8888
htemp = head;
89-
while(htemp!=null){ // 循环遍历,寻找关键字匹配的结点
89+
while(htemp!=null){ // 循环遍历,寻找关键字匹配的结点
9090
if(htemp.nodeData.key.compareTo(key)==0){
9191
return htemp;
9292
}
@@ -133,12 +133,12 @@ int CLDeleteNode(CLType head, String key){ // 删除关键字结点
133133
htemp = head;
134134
tempnode = head;
135135
while(htemp != null){
136-
if(htemp.nodeData.key.compareTo(key)==0){ // 遍历查找
137-
tempnode.nextNode = htemp.nextNode; // 当前结点的引用指向下一个结点的引用,以此删除htemp结点
136+
if(htemp.nodeData.key.compareTo(key)==0){ // 遍历查找
137+
tempnode.nextNode = htemp.nextNode; // 当前结点的引用指向下一个结点的引用,以此删除htemp结点
138138
return 1;
139139
}
140140
tempnode = htemp; // 保存当前结点
141-
htemp = htemp.nextNode; // 指向下一个结点
141+
htemp = htemp.nextNode; // 指向下一个结点
142142
}
143143
return 0;
144144
}
@@ -162,7 +162,7 @@ int CLLength(CLType head){ //返回结点总数
162162

163163
## 显示所有结点
164164
```java
165-
void CLAllNode(CLType head){ // 遍历链表输出所有数据
165+
void CLAllNode(CLType head){ // 遍历链表输出所有数据
166166
CLType htemp;
167167
htemp = head;
168168
System.out.printf("\n当前链表共有%d个结点。链表所有数据如下:\n",CLLength(head));

src/dataStructure/orderList/README.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
## 准备数据
77
准备在顺序表操作中需要用到的变量及数据结构等。
88
```java
9-
class DATA{ // 定义数据元素结构
9+
class DATA{ // 定义数据元素结构
1010
String key; // 结点的关键字
1111
String name;
1212
int age;
@@ -19,7 +19,7 @@ class DATA{ // 定义数据元素结构
1919
class SLType{
2020
static final int MAXLEN=100;
2121
DATA[] ListData = new DATA[MAXLEN+1]; // 保存顺序表的结构数组
22-
int ListLen; // 顺序表已存结点的数量
22+
int ListLen; // 顺序表已存结点的数量
2323
}
2424
```
2525
## 初始化顺序表
@@ -39,25 +39,25 @@ int SLLength(SLType SL){ // 返回顺序表的元素数量
3939
## 插入结点
4040
插入结点就是在线性表L的第i个位置插入一个新的结点,使得其后的结点编号依次加1。
4141
```java
42-
int SLInsert(SLType SL, int n, DATA data){ // 插入结点到顺序表中间的位置
42+
int SLInsert(SLType SL, int n, DATA data){ // 插入结点到顺序表中间的位置
4343

44-
if(SL.ListLen>=MAXLEN){ // 顺序表已满
44+
if(SL.ListLen>=MAXLEN){ // 顺序表已满
4545
System.out.println("顺序表已满,不能插入结点!\n");
4646
return 0;
4747
}
4848

49-
if(n<1 || n>SL.ListLen-1){ // 校验插入位置的合法性
49+
if(n<1 || n>SL.ListLen-1){ // 校验插入位置的合法性
5050
System.out.println("插入元素序号错误,不能插入元素!\n");
5151
return 0;
5252
}
5353

5454
for(int i=SL.ListLen;i>=n;i--){ // 将插入位置n后续的结点都向后移动一位
5555
SL.ListData[i+1]=SL.ListData[i];
5656
}
57-
SL.ListData[n]=data; // 插入结点
58-
SL.ListLen++; // 顺序表节点数量加1
59-
return 1; //成功插入,返回1
60-
}
57+
SL.ListData[n]=data; // 插入结点
58+
SL.ListLen++; // 顺序表节点数量加1
59+
return 1; //成功插入,返回1
60+
}
6161
```
6262
## 追加结点
6363
追加结点并不是一个基本的数据结构运算,其可以看作插入结点的一种特殊形式,相当于在顺序表的末尾新增一个数据结点。由于追加结点的特殊性,其代码实现比插入结点要简单,因为不必进行大量数据的移动。
@@ -74,7 +74,7 @@ int SLAdd(SLType SL, DATA data){ // 增加元素到顺序表尾部
7474
## 删除结点
7575
删除结点即删除线性表L中的第i个结点,使得其后的所有结点编号依次减1。删除一个结点之后,线性表L的长度将变为n-1。删除结点和插入结点类似,都需要进行大量数据的移动。
7676
```java
77-
int SLDelete(SLType SL, int n){ // 按位删除顺序表的结点
77+
int SLDelete(SLType SL, int n){ // 按位删除顺序表的结点
7878

7979
if(n<1 || n>SL.ListLen+1){ // 删除结点序号不正确
8080
System.out.println("删除结点序号错误,不能删除结点!\n");
@@ -94,7 +94,7 @@ int SLDelete(SLType SL, int n){ // 按位删除顺序表的结点
9494
1)按照序号查找结点
9595
按照序号查找结点是顺序表查找结点最常用的方法,这是因为顺序表的存储本身就是一个数组。
9696
```java
97-
DATA SLFindByNum(SLType SL, int n){ // 根据序号返回数据元素
97+
DATA SLFindByNum(SLType SL, int n){ // 根据序号返回数据元素
9898

9999
if(n<1 || n>SL.ListLen+1){
100100
System.out.println("结点序号错误,不能返回结点!\n");
@@ -106,8 +106,8 @@ DATA SLFindByNum(SLType SL, int n){ // 根据序号返回数据元素
106106
2)按照关键字查找结点
107107
关键字可以是数据元素结构中的任意一项
108108
```java
109-
int SLFindByKey(SLType SL, String key){ // 按关键字查询结点
110-
for (int i = 1; i <= SL.ListLen; i++) { // 搜寻整个顺序表,返回和key匹配的结点
109+
int SLFindByKey(SLType SL, String key){ // 按关键字查询结点
110+
for (int i = 1; i <= SL.ListLen; i++) { // 搜寻整个顺序表,返回和key匹配的结点
111111
if(SL.ListData[i].key.compareTo(key)==0){
112112
return i;
113113
}
@@ -118,7 +118,7 @@ int SLFindByKey(SLType SL, String key){ // 按关键字查询结点
118118
## 显示所有结点
119119
打印线性表中的所有数据元素
120120
```java
121-
int SLALL(SLType SL){ // 显示顺序表中的所有结点
121+
int SLALL(SLType SL){ // 显示顺序表中的所有结点
122122

123123
for(int i=1; i<=SL.ListLen; i++){
124124
System.out.printf("(%s,%s,%d)\n", SL.ListData[i].key, SL.ListData[i].name, SL.ListData[i].age);

src/dataStructure/queue/README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ class DATA{
1313
class SQType{
1414
static final int QUEUELEN = 15;
1515
DATA[] data = new DATA[QUEUELEN]; // 队列顺序结构数组
16-
int head; // 队头
17-
int tail; // 队尾
16+
int head; // 队头
17+
int tail; // 队尾
1818
}
1919
```
2020
在上述代码中,定义了队列结构的最大长度QUEUELEN,队列结构数据元素的类DATA及队列结构的类SQType。在类SQType中,data为数据元素,head为队头的序号,tail为队尾的序号。当head=0时表示队列为空,当tail=QUEUELEN时表示队列已满。
@@ -24,9 +24,9 @@ class SQType{
2424
1. 按符号常量QUEUELEN指定的大小申请一片内存空间,用来保存队列中的数据。
2525
2. 设置head=0和tail=0,表示一个空栈。
2626
```java
27-
SQType SQTypeInit(){ // 队列初始化
27+
SQType SQTypeInit(){ // 队列初始化
2828
SQType q;
29-
if((q=new SQType())!=null){ // 申请内存
29+
if((q=new SQType())!=null){ // 申请内存
3030
q.head = 0;
3131
q.tail = 0;
3232
return q;
@@ -68,7 +68,7 @@ void SQTypeClear(SQType q){ // 清空队列
6868
```
6969
## 释放空间
7070
```java
71-
void SQTypeFree(SQType q){ // 释放队列
71+
void SQTypeFree(SQType q){ // 释放队列
7272
if(q != null){
7373
q = null;
7474
}
@@ -85,7 +85,7 @@ int InSQType(SQType q, DATA data){ // 入队列
8585
System.out.println("队列已满! 操作失败!\n");
8686
return 0;
8787
}
88-
q.data[q.tail++] = data; // 顺序入队列,并将队尾指针+1
88+
q.data[q.tail++] = data; // 顺序入队列,并将队尾指针+1
8989
return 1;
9090
}
9191
```
@@ -97,12 +97,12 @@ int InSQType(SQType q, DATA data){ // 入队列
9797
2. 从队列首部取出队头元素(实际是返回队头元素的引用)。
9898
3. 设修改队头head的序号,使其指向后一个元素。
9999
```java
100-
DATA OutSQType(SQType q){ // 出队列
100+
DATA OutSQType(SQType q){ // 出队列
101101
if(q.head==q.tail){
102102
System.out.println("队列已空! 操作失败!\n");
103103
return null;
104104
}else{
105-
return q.data[q.head++]; // 顺序出队列,并将队首指针+1
105+
return q.data[q.head++]; // 顺序出队列,并将队首指针+1
106106
}
107107
}
108108
```
@@ -124,7 +124,7 @@ DATA PeekSQType(SQType q){ //读结点数据
124124
## 计算队列长度
125125
计算队列长度即统计该队列中数据结点的个数。计算队列长度的方法比较简单,用队尾序号减去队头序号即可。
126126
```java
127-
int SQTypeLen(SQType q){ // 计算队列长度
127+
int SQTypeLen(SQType q){ // 计算队列长度
128128
int temp;
129129
temp=q.tail - q.head;
130130
return temp;

src/dataStructure/stack/README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ class DATA{
1212
*/
1313
class StackType{
1414
static final int MAXLEN = 50;
15-
DATA[] data = new DATA[MAXLEN+1]; // 构建栈结构
16-
int top; // 栈顶
15+
DATA[] data = new DATA[MAXLEN+1]; // 构建栈结构
16+
int top; // 栈顶
1717
}
1818
```
1919
在上述代码中,定义了栈结构的最大长度MAXLEN,栈结构数据元素的类DATA及栈结构的类StackType。在类StackType中,data为数据元素,top为栈顶的序号。当top=0时表示栈为空,当top=SIZE时表示栈满。
@@ -24,40 +24,40 @@ Java语言中数组都是从下标0开始的。在这里,为了讲述和理解
2424
1. 按符号常量SIZE指定的大小申请一片内存空间,用来保存栈中的数据。
2525
- 设置栈顶引用的值为0,表示一个空栈。
2626
```java
27-
StackType STInit(){ // 栈的初始化
27+
StackType STInit(){ // 栈的初始化
2828
StackType p;
29-
if((p=new StackType())!=null){ / 申请栈内存
30-
p.top = 0; // 设置栈顶为0
31-
return p; // 返回指向栈的引用
29+
if((p=new StackType())!=null){ // 申请栈内存
30+
p.top = 0; // 设置栈顶为0
31+
return p; // 返回指向栈的引用
3232
}
3333
return null;
3434
}
3535
```
3636
## 判断空栈
3737
判断空栈即判断一个栈结构是否为空。如果是空栈,则表示该结构中没有数据。此时可以进行入栈操作,但不可以进行出栈操作。
3838
```java
39-
boolean STIsEmpty(StackType s){ // 判断栈是否为空
39+
boolean STIsEmpty(StackType s){ // 判断栈是否为空
4040
return s.top==0;
4141
}
4242
```
4343
## 判断满栈
4444
如果是满栈,则表示该结构中没有多余的空间来保存额外数据。此时不可以进行入栈操作,但是可以进行出栈操作。
4545
```java
46-
boolean STIsFull(StackType s){ // 判断栈是否已满
46+
boolean STIsFull(StackType s){ // 判断栈是否已满
4747
return s.top==MAXLEN;
4848
}
4949
```
5050
## 清空栈
5151
清空栈即清除栈中的所有数据,在程序中简单地将栈顶引用top设置为0,表示执行清空栈操作。
5252
```java
53-
void STClear(StackType s){ // 清空栈
53+
void STClear(StackType s){ // 清空栈
5454
s.top = 0;
5555
}
5656
```
5757
## 释放空间
5858
释放空间即释放栈结构所占用的内存单元,程序中,直接赋值null操作释放所分配的内存。一般在不需要使用栈结构的时候使用,特别是程序结束时。
5959
```java
60-
void STFree(StackType s){ // 释放栈所占用的空间
60+
void STFree(StackType s){ // 释放栈所占用的空间
6161
if(s != null){
6262
s = null;
6363
}
@@ -74,7 +74,7 @@ int PushST(StackType s, DATA data){ // 入栈
7474
System.out.println("栈溢出!\n");
7575
return 0;
7676
}
77-
s.data[++s.top] = data; // 元素入栈,top指针+1
77+
s.data[++s.top] = data; // 元素入栈,top指针+1
7878
return 1;
7979
}
8080
```
@@ -89,15 +89,15 @@ DATA PopST(StackType s){ // 出栈
8989
System.out.println("栈为空!\n");
9090
return null;
9191
}
92-
return s.data[s.top--]; // 元素出栈,top指针-1
92+
return s.data[s.top--]; // 元素出栈,top指针-1
9393
}
9494
```
9595
## 读结点数据
9696
读结点数据即读取栈结构中结点的数据。由于栈结构只能在一段进行操作,因此这里的读操作其实就是读取栈顶的数据。
9797

9898
需要注意的是,读结点数据的操作和出栈的操作不同。读结点数据的操作仅显示栈顶结点数据的内容,而出栈操作则是将栈顶数据弹出,该数据不再存在了。
9999
```java
100-
DATA PeekST(StackType s){ // 读栈顶数据
100+
DATA PeekST(StackType s){ // 读栈顶数据
101101
if(s.top==0){
102102
System.out.println("栈为空! 出栈失败!\n");
103103
System.exit(0);

0 commit comments

Comments
 (0)