Skip to content
This repository was archived by the owner on Jan 7, 2023. It is now read-only.

Commit 9133afe

Browse files
author
kimYang
authored
Merge pull request #1 from KimYangOfCat/dev
Dev update
2 parents 7793374 + f8d4e36 commit 9133afe

19 files changed

+489
-383
lines changed

DataStructure/DS_0_Introduction/DS_0_0_love.cpp

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,77 +10,78 @@
1010
//下面四种函数的时间复杂度值得分析一二
1111

1212
//逐步递增型爱你
13-
void LoveYou0(int n){
14-
int i=1;
15-
while (i<=n){
16-
printf("I love you %d \n",i);
13+
void LoveYou0(int n) {
14+
int i = 1;
15+
while (i <= n) {
16+
printf("I love you %d \n", i);
1717
i++;
1818
}
19-
printf("I love you more than %d\n",n);
19+
printf("I love you more than %d\n", n);
2020
}
2121

2222
//嵌套循环型爱你
23-
void loveYou1(int n){
24-
int i=1;
25-
while (i<=n){
23+
void loveYou1(int n) {
24+
int i = 1;
25+
while (i <= n) {
2626
i++;
27-
printf("I love you %d\n",i);
28-
for (int j = 1; j <n ; j++) {
27+
printf("I love you %d\n", i);
28+
for (int j = 1; j < n; j++) {
2929
printf("I love you too\n");
3030
}
3131
}
32-
printf("I love you more than %d\n",n);
32+
printf("I love you more than %d\n", n);
3333
}
34+
3435
//指数递增型爱你
35-
void loveYou2(int n){
36-
int i=1;
37-
while (i<=n){
38-
printf("I love you %d\n",i);
39-
i=i*2;
36+
void loveYou2(int n) {
37+
int i = 1;
38+
while (i <= n) {
39+
printf("I love you %d\n", i);
40+
i = i * 2;
4041
}
41-
printf("I love you more than %d\n ",n);
42+
printf("I love you more than %d\n ", n);
4243
}
4344

4445
//搜索数字型爱你
45-
void loveYou3(int flag[],int n){
46+
void loveYou3(int flag[], int n) {
4647
printf("I Am kim\n");
4748
for (int i = 0; i < n; i++) {
4849
//我觉这里应该是数组长度
49-
if (flag[i]==n){
50-
printf("I love you %d\n",n);
50+
if (flag[i] == n) {
51+
printf("I love you %d\n", n);
5152
break;//找到之后就跳出循环
5253
}
5354
}
5455
}
56+
5557
//递归型爱你
56-
void loveYou4(int n){
57-
int a,b,c;
58-
if (n>1){
59-
loveYou4(n-1);
58+
void loveYou4(int n) {
59+
int a, b, c;
60+
if (n > 1) {
61+
loveYou4(n - 1);
6062
}
61-
printf("I love you %d\n",n);
63+
printf("I love you %d\n", n);
6264
}//递归调用会带来多余的内存开销
6365

6466
/**实现模块**/
6567

6668
/**测试模块**/
6769

6870
//测试函数
69-
void Test(){
71+
void testModule() {
7072
LoveYou0(30);
7173
loveYou1(30);
7274
loveYou2(30);
7375

74-
int array[5]={2,10,100,1000,10000};
76+
int array[5] = {2, 10, 100, 1000, 10000};
7577
//声明一个数组并初始化
76-
loveYou3(array,10);
78+
loveYou3(array, 10);
7779
loveYou4(4);
78-
7980
}
8081

8182
/**测试模块**/
8283

83-
int main(){
84-
Test();
84+
int main() {
85+
testModule();
8586
return 0;
8687
}

DataStructure/DS_1_LinearList/DS_1_0_SqList.cpp

Lines changed: 89 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -8,63 +8,75 @@
88
/**定义模块**/
99

1010
#include <stdio.h>
11+
1112
#define MaxSize 10
1213

1314
typedef struct {
1415
int data[MaxSize];
1516
int length;
16-
}SqList;
17+
} SqList;
1718

1819
//函数声明
19-
void PrintSqList(SqList L);
20+
void InitList(SqList &L); //初始化
21+
bool Empty(SqList L); //判空
22+
bool ListInsert(SqList &L, int i, int e); //插入
23+
bool ListDelete(SqList &L, int i, int &e); //删除
24+
int GetElem(SqList L, int i); //按位查找
25+
int LocateElem(SqList L, int e); //按值查找
26+
bool LocateChangeElem(SqList &L, int e, int em); //按值修改
27+
bool getChangeElem(SqList &L, int i, int em); //按位修改
28+
29+
void PrintSqList(SqList L); //打印函数
30+
void testModule(); //测试模块
2031

2132
/**定义模块**/
2233

2334
/**实现模块**/
2435

2536
//初始化
26-
void InitList(SqList &L){
37+
void InitList(SqList &L) {
2738
for (int i = 0; i < MaxSize; i++) {
28-
L.data[i]=0;//将所有元素的初始值默认设置为0
39+
L.data[i] = 0;//将所有元素的初始值默认设置为0
2940
//这一步其实可以省略,但是省略之后,有可能受到内存中"脏数据"的影响
3041
}
31-
L.length=0;
42+
L.length = 0;
3243

3344
}
45+
3446
//判空
35-
bool Empty(SqList L){
36-
return (L.length==0);
47+
bool Empty(SqList L) {
48+
return (L.length == 0);
3749
}
3850

3951
//插入
40-
bool ListInsert(SqList &L,int i,int e){
52+
bool ListInsert(SqList &L, int i, int e) {
4153
//判断插入的位置是否合法,
42-
if (i<1||i>L.length+1)
54+
if (i < 1 || i > L.length + 1)
4355
return false;
4456
//判断表是否存满了
45-
if (L.length>=MaxSize)
57+
if (L.length >= MaxSize)
4658
return false;
4759

4860
//后面的元素后移
49-
for (int j = L.length; j >=i ; j--) {
50-
L.data[j]=L.data[j-1];
61+
for (int j = L.length; j >= i; j--) {
62+
L.data[j] = L.data[j - 1];
5163
}
52-
L.data[i-1]=e;
64+
L.data[i - 1] = e;
5365
L.length++;
5466
return true;
5567
}
5668

5769
//删除
58-
bool ListDelete(SqList &L,int i,int &e){
70+
bool ListDelete(SqList &L, int i, int &e) {
5971
//判断i的位置是否合法
60-
if(i<0||i>L.length){
72+
if (i < 0 || i > L.length) {
6173
return false;
6274
}
6375
//取出将要被删除的数
64-
e=L.data[i-1];
76+
e = L.data[i - 1];
6577
//将其后的数据前移
66-
for (int j = i; j <=L.length ; j++) {
67-
L.data[j-1]=L.data[j];
78+
for (int j = i; j <= L.length; j++) {
79+
L.data[j - 1] = L.data[j];
6880
}
6981
//线性表长度减一
7082
L.length--;
@@ -73,19 +85,19 @@ bool ListDelete(SqList &L,int i,int &e){
7385

7486
//查找
7587
//按位查找
76-
int GetElem(SqList L,int i){
88+
int GetElem(SqList L, int i) {
7789
//判断是否越界
78-
if (i<0||i>L.length)
90+
if (i < 0 || i > L.length)
7991
return -1;
80-
return L.data[i-1];
92+
return L.data[i - 1];
8193
}
8294

8395
//按值查找
84-
int LocateElem(SqList L,int e){
96+
int LocateElem(SqList L, int e) {
8597
//循环出查找
86-
for (int i = 0; i <L.length ; i++) {
87-
if (L.data[i]==e)
88-
return i+1; //返回位序
98+
for (int i = 0; i < L.length; i++) {
99+
if (L.data[i] == e)
100+
return i + 1; //返回位序
89101
}
90102
return -1;
91103
}
@@ -94,50 +106,30 @@ int LocateElem(SqList L,int e){
94106
//先查找后改值
95107
//由此分为两种方式,先按位查找后改值;或先按值查找后改值
96108
//先按值查找后改值
97-
bool LocateChangeElem(SqList &L,int e,int em){
109+
bool LocateChangeElem(SqList &L, int e, int em) {
98110
//按值查找得到位序
99-
int bitOrder =LocateElem(L,e);
111+
int bitOrder = LocateElem(L, e);
100112
//改值
101-
if (bitOrder !=-1){
102-
L.data[bitOrder]=em;
113+
if (bitOrder != -1) {
114+
L.data[bitOrder] = em;
103115
return true;
104-
} else{
116+
} else {
105117
return false;
106118
}
107119
}
120+
108121
//先按位序查找后改值
109-
bool getChangeElem(SqList &L,int i,int em){
122+
bool getChangeElem(SqList &L, int i, int em) {
110123
//注意由于是改值涉及修改原数据,所以需要用引用传递的方式
111124
//给的位序,首先判断i是否合法
112-
if(i<0||i>=L.length)return false;
125+
if (i < 0 || i >= L.length)return false;
113126

114127
//由于是用数组实现的方式,可以直接利用i查找
115-
L.data[i]=em;
128+
L.data[i] = em;
116129
return true;
117130

118131
}
119132

120-
//Change Test
121-
void ChangeTest(SqList &L,int e,int em1,int i, int em2){
122-
//change 修改元数据用引用的方式
123-
printf("开始测试【改】\n"
124-
"第一种方式先按值查找后改值\n");
125-
if (LocateChangeElem(L,e,em1)){
126-
printf("第一种先按值查找后改值成功啦,改变后的值如下:\n");
127-
PrintSqList(L);
128-
} else{
129-
printf("第一种先按值查找后改值失败了,再检查一下吧!\n");
130-
}
131-
printf("第二种先按位序查找后改值\n");
132-
if (getChangeElem(L,i,em2)){
133-
printf("第二种先按位序查找后改值的方式成功啦,改变后的值如下:\n");
134-
PrintSqList(L);
135-
} else{
136-
printf("第二种先按位序查找后改值的方式失败了,再检查一下吧!\n");
137-
}
138-
139-
140-
}
141133

142134
//销毁
143135
//由于静态分配方式是通过声明数组的方式实现的,故不需要手动销毁SqList表,在使用完成之后,系统会自动删除数据并回收数据空间
@@ -148,62 +140,85 @@ void ChangeTest(SqList &L,int e,int em1,int i, int em2){
148140

149141
//测试
150142
//打印整个顺序表
151-
void PrintSqList(SqList L){
143+
void PrintSqList(SqList L) {
152144
//循环打印
153145
printf("开始打印顺序表\n");
154-
for (int i = 0; i < L.length ; i++) {
155-
printf("Data[%d]==%d\n",i,L.data[i]);
146+
for (int i = 0; i < L.length; i++) {
147+
printf("Data[%d]==%d\n", i, L.data[i]);
156148
}
157149
printf("打印结束!\n");
158150
}
159151

160152
//测试函数
161-
void Test(){
153+
void testModule() {
162154
SqList L;
163155
InitList(L);
164156

165157
// 初试化一些值
166-
L.data[0]=1;
167-
L.data[1]=2;
168-
L.data[2]=3;
169-
L.length=3;
158+
L.data[0] = 1;
159+
L.data[1] = 2;
160+
L.data[2] = 3;
161+
L.length = 3;
170162

171163
//插入操作
172-
if (ListInsert(L,2,3)){
164+
if (ListInsert(L, 2, 3)) {
173165
printf("插入成功了\n");
174-
} else{
166+
} else {
175167
printf("插入失败了,i的位置不合法,请检查\n");
176168
}
177169

178170
//删除操作
179-
int e=-1;
180-
if (ListDelete(L,2,e)){
181-
printf("删除成功!删除的值是:%d\n",e);
182-
} else{
171+
int e = -1;
172+
if (ListDelete(L, 2, e)) {
173+
printf("删除成功!删除的值是:%d\n", e);
174+
} else {
183175
printf("删除失败,请检查位序是否正确\n");
184176
}
185177

186178
//数组当前长度
187-
printf("数组当前长度是多少?%d\n",L.length);
179+
printf("数组当前长度是多少?%d\n", L.length);
188180

189181
//查找第一个元素是什么?
190-
printf("第一个元素是什么?\n %d\n",GetElem(L,1));
182+
printf("第一个元素是什么?\n %d\n", GetElem(L, 1));
191183

192184
//查找值为3的元素在什么位置
193-
printf("第一个值为3的元素在什么位置?\n %d \n",LocateElem(L,3));
185+
printf("第一个值为3的元素在什么位置?\n %d \n", LocateElem(L, 3));
194186

195187
//打印输出
196188
PrintSqList(L);
197189

198190
//测试改模块功能是否正常
199-
ChangeTest(L,2,6,1,7);
191+
int e1 = 2;
192+
int em1 = 6;
193+
int i = 1;
194+
int em2 = 7;
195+
printf("开始测试【改】\n"
196+
"第一种方式先按值查找后改值\n");
197+
if (LocateChangeElem(L, e1, em1)) {
198+
printf("第一种先按值查找后改值成功啦,改变后的值如下:\n");
199+
PrintSqList(L);
200+
} else {
201+
printf("第一种先按值查找后改值失败了,再检查一下吧!\n");
202+
}
203+
printf("第二种先按位序查找后改值\n");
204+
if (getChangeElem(L, i, em2)) {
205+
printf("第二种先按位序查找后改值的方式成功啦,改变后的值如下:\n");
206+
PrintSqList(L);
207+
} else {
208+
printf("第二种先按位序查找后改值的方式失败了,再检查一下吧!\n");
209+
}
210+
if (Empty(L)) {
211+
printf("顺序表为空!\n");
212+
} else {
213+
printf("顺序表非空!\n");
214+
}
200215

201216
//打印输出
202217
PrintSqList(L);
203218
}
204219
/**测试模块**/
205220
//主函数
206-
int main(){
207-
Test();
221+
int main() {
222+
testModule();
208223
return 0;
209224
}

0 commit comments

Comments
 (0)