Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
913 commits
Select commit Hold shift + click to select a range
640d44a
Merge pull request #89 from HuiZhou-Xmu/master
zavier May 6, 2017
8535b40
完成最小数栈,2个队列实现栈,一个数组实现2个栈
miniyk2012 May 6, 2017
40737de
最小数栈更好的方法,minStack保存了曾经的最小数的入栈顺序
miniyk2012 May 6, 2017
9c94437
注释
miniyk2012 May 6, 2017
9eb7e6d
the fifth homwork JVM, ClassFileParser, constantPool
JaneZhou91 May 6, 2017
15b45d6
修改测试用例
miniyk2012 May 6, 2017
847b7f4
5.6作业
jjyyjjyy May 6, 2017
f7c90f1
queue数据结构
hongxin230 May 6, 2017
c9154fa
完成循环队列及使用2个栈实现队列
zzJohnH May 6, 2017
83c5fa1
Merge branch 'wizardzhang2017/master'
GordenChow May 6, 2017
bd6649c
Jvm第五次作业提交
GordenChow May 6, 2017
c0e443b
第八周作业完成
ThomasChant May 6, 2017
b6a214d
Merge pull request #6 from DonaldY/master
sdnb May 6, 2017
cf8724d
week9数据结构作业完成
May 6, 2017
1d2afc3
pom.xml
Mandarava May 6, 2017
6022630
JVM第6次作业
Mandarava May 6, 2017
886a92e
QuickMinStack
hongxin230 May 6, 2017
1818dd3
Merge pull request #6 from zavier/master
PigTS May 6, 2017
8fcd5b8
Merge pull request #55 from GordenChow/master
wizardzhang2017 May 6, 2017
bd74d3b
Merge remote-tracking branch 'nusubmarine01/master'
cmhello88 May 6, 2017
2f202c5
第五次作业之数据结构
May 6, 2017
2988b0f
第六次作业之数据结构
May 6, 2017
8f2b216
完成约瑟夫环
zzJohnH May 6, 2017
50a54e0
Merge pull request #90 from GallenZhang/master
zavier May 6, 2017
26dc239
Merge pull request #57 from zhaohuXing/master
gqipan May 7, 2017
e0dce73
Merge pull request #58 from learnGithubChen/master
gqipan May 7, 2017
c8b5a43
Merge pull request #61 from Kandde/master
zhanglifeng May 7, 2017
7931f50
Merge remote-tracking branch 'liuxin/master'
May 7, 2017
c8e91a7
Merge pull request #78 from 626451284/master
DonaldY May 7, 2017
d8971a8
Merge pull request #77 from macvis/master
DonaldY May 7, 2017
6e44b5c
the fifth homework...StackUtil
JaneZhou91 May 7, 2017
7db5e0c
Merge pull request #4 from guodongym/master
onlyLYJ May 7, 2017
fa44981
Merge remote-tracking branch 'refs/remotes/diliuzuzhanghao/master'
yanghaitao0410 May 7, 2017
09f9e7f
数据结构作业
844028312 May 7, 2017
bdd071c
jvm作业
844028312 May 7, 2017
d93a80f
Merge remote-tracking branch 'origin/master'
ThomasChant May 7, 2017
541a897
Merge pull request #62 from onlyliuxin/master
zhanglifeng May 7, 2017
bc5ca47
jvm6作业
May 7, 2017
8908e8b
最新数据结构作业
anxinJ May 7, 2017
726db02
第9周作业完成
ThomasChant May 7, 2017
a9f7b1d
jvm部分 数据结构
May 7, 2017
c6ded70
完成用2个队列实现栈以及用一个数组实现2个栈
zzJohnH May 7, 2017
552e290
完成jvm第九周数据结构
zzJohnH May 7, 2017
38cdfd1
InfixExpr&&PrefixExpr&&PostfixExpr&&InfixToPostfix
May 7, 2017
2603de0
week11, JVM(6)
zhaohuxing May 7, 2017
74f9516
CircleQueue&&Josephus&&QueueWithTwoStacks
May 7, 2017
28cf46b
作业
May 7, 2017
4570ddf
Merge pull request #59 from zhaohuXing/master
gqipan May 7, 2017
3b92533
Merge pull request #61 from ddyblackhat/master
844028312 May 7, 2017
3b649c5
Merge remote-tracking branch 'upstream/master'
xiaomingbai May 7, 2017
25996e2
Merge pull request #60 from dustheart/master
844028312 May 7, 2017
c02b16c
Merge pull request #59 from xiaomingbai/master
844028312 May 7, 2017
5746ef2
Merge remote-tracking branch 'upstream/master'
xiaomingbai May 7, 2017
2832cba
Merge pull request #57 from begin16119/master
844028312 May 7, 2017
a72a8a6
finish Josephus question
Viscaria233 May 7, 2017
3b0c668
第九周作业
PigTS May 7, 2017
da4ec84
第八次和第九次作业
Jamesmahaitao May 7, 2017
6049579
第七次作业之数据结构
May 7, 2017
35ab962
第八次作业之数据结构
May 7, 2017
506f75d
Merge pull request #93 from GallenZhang/master
zavier May 7, 2017
a8a6418
Merge pull request #91 from HuiZhou-Xmu/master
zavier May 7, 2017
019f5d3
Merge pull request #92 from Viscaria233/master
zavier May 7, 2017
86177d8
Merge pull request #84 from HarryHook/master
May 7, 2017
cf585ea
Merge pull request #85 from orajavac/master
May 7, 2017
6a94b2e
Merge pull request #86 from miniyk2012/master
May 7, 2017
faf079e
Merge pull request #35 from JaneZhou91/master
zeyuanpinghe May 7, 2017
534d166
Merge pull request #36 from xukaide77/master
zeyuanpinghe May 7, 2017
8114dec
Merge pull request #60 from Jamesmahaitao/master
gqipan May 7, 2017
45152e1
Merge pull request #34 from yanghaitao0410/master
diliuzuzhanghao May 7, 2017
9955c22
Merge pull request #33 from foreverkai/master
diliuzuzhanghao May 7, 2017
04d6a67
数据结构代码
thlcly May 7, 2017
98dc77b
Merge pull request #94 from thlcly/master
zavier May 7, 2017
5e16d85
Merge pull request #80 from johnChnia/master
DonaldY May 7, 2017
926b8ea
Merge pull request #79 from sdnb/master
DonaldY May 7, 2017
4149f38
jvm
diliuzuzhanghao May 7, 2017
3ea2bff
8week&9week
May 7, 2017
f304b08
作业补交
sulei0205 May 7, 2017
7a125ea
数据结构作业修正
sulei0205 May 7, 2017
5c6a6be
17.5.1-5.7 作业:stack练习
May 7, 2017
a8c267b
Merge pull request #81 from ipk2015/master
DonaldY May 7, 2017
92577e9
Merge pull request #53 from ztc-dev/master
nusubmarine01 May 7, 2017
a5fbec9
3月30号,JVM第一次数据结构作业,实现简单的LRU算法
cmhello88 May 7, 2017
4416b87
4月5号,JVM中仅完成第二次数据结构作业
cmhello88 May 7, 2017
7b13056
Merge branch 'master' of github.com:cmhello88/coding2017
cmhello88 May 7, 2017
17a07ec
5月7号,仅完成数据结构部分作业
cmhello88 May 7, 2017
4ded179
Merge branch 'master' of github.com:cmhello88/coding2017
cmhello88 May 7, 2017
4339501
edit StackUtil.reverse()
xiaomingbai May 7, 2017
23d9286
Merge pull request #47 from anxinJ/master
Mr-ChangK May 7, 2017
a88ff73
Merge pull request #46 from vegetableDogBai/master
Mr-ChangK May 7, 2017
93052f7
Merge pull request #45 from Jiandan1357/master
Mr-ChangK May 7, 2017
5716efd
the sixth homework ... InfixExpr
JaneZhou91 May 7, 2017
621f930
4 mother
Mr-ChangK May 7, 2017
0fa3e44
6522
Mr-ChangK May 7, 2017
a316559
6666666
Mr-ChangK May 7, 2017
4d114d4
Merge remote-tracking branch 'aa/master'
Mr-ChangK May 7, 2017
f412c8d
Merge pull request #63 from xiaomingbai/master
844028312 May 8, 2017
759d27e
Merge pull request #70 from tanghaojie/master
guodongym May 8, 2017
729220b
Merge pull request #62 from sulei0205/master
844028312 May 8, 2017
b2f23f4
Merge pull request #69 from loveyuanyuanisluckly/master
guodongym May 8, 2017
3552e9d
Merge pull request #68 from onlyLYJ/master
guodongym May 8, 2017
625657e
Merge pull request #37 from JaneZhou91/master
zeyuanpinghe May 8, 2017
71d5050
删除多余的二进制文件
cmhello88 May 8, 2017
f7162ba
Merge pull request #56 from cmhello88/master
nusubmarine01 May 8, 2017
8448fde
Merge pull request #64 from jy97799/master
jodie-zss May 8, 2017
04b21b8
Merge pull request #5 from wizardzhang2017/master
liujk May 8, 2017
87527dd
QuickMinStack&&StackWithTwoQueues&&TwoStackInOneArray
May 8, 2017
5389f19
JVM主题第7次数据结构作业
onlyliuxin May 8, 2017
798c6ad
修改bug
onlyliuxin May 8, 2017
e031bf4
JVM主题第6次数据结构习题
onlyliuxin May 8, 2017
8d4b447
update from idea
liujk May 8, 2017
7f18faf
Merge pull request #95 from onlyliuxin/master
zavier May 8, 2017
e6bb4d5
Merge remote-tracking branch 'upstream/master'
844028312 May 8, 2017
75fe20b
Merge branch 'master' of https://github.com/844028312/coding2017
844028312 May 8, 2017
932f15a
Merge branch 'master' of https://github.com/onlyliuxin/coding2017
DonaldY May 8, 2017
9d12917
Merge branch 'master' of github.com:DonaldY/coding2017
DonaldY May 8, 2017
ae89730
Tenth Week Homework
DonaldY May 8, 2017
b183eb4
finished Tenth Week Homework
DonaldY May 8, 2017
42061c6
Merge pull request #65 from onlyliuxin/master
jodie-zss May 8, 2017
fb72152
Jvm第六次作业提交
GordenChow May 8, 2017
c52d585
Merge pull request #87 from onlyliuxin/master
May 8, 2017
31269d1
数据结构作业
SmilePoorCat May 9, 2017
309244b
单元测试
SmilePoorCat May 9, 2017
ff76087
作业修正
sulei0205 May 9, 2017
2ecdae1
Merge pull request #65 from sulei0205/master
844028312 May 9, 2017
26aaba9
the sixth homework --JVM3 Field and Method Parse
JaneZhou91 May 9, 2017
000cc9e
Merge pull request #38 from JaneZhou91/master
zeyuanpinghe May 9, 2017
1d760df
数据结构作业10
TerrenceWen0832 May 9, 2017
1fa5299
二叉树练习作业1
May 9, 2017
22c2ea4
完成jvm第七次作业
thlcly May 9, 2017
40656ca
Merge branch 'master' of https://github.com/zavier/coding2017
thlcly May 9, 2017
02beb02
Merge pull request #96 from thlcly/master
zavier May 9, 2017
64ff0e2
Merge remote-tracking branch 'liuxin/master'
May 9, 2017
b24141e
bad code, go to sleep
May 9, 2017
7a3c0f0
第九次作业之数据结构
May 9, 2017
d8d7b00
Merge pull request #97 from GallenZhang/master
zavier May 10, 2017
079877c
Merge remote-tracking branch 'upstream/master'
chzh55 May 10, 2017
79beae4
Merge branch 'master' of https://github.com/kingkeivn/coding2017
chzh55 May 10, 2017
f3b08c1
BinaryTreeUtil
May 10, 2017
a8421d5
tree练习完成
May 10, 2017
4cfa117
FileList
May 10, 2017
3d868b1
5.8-5.14 tree练习完成
May 10, 2017
dbcb2e6
jvm第七次作业
lzbferrari May 10, 2017
305898c
Merge pull request #57 from GordenChow/master
wizardzhang2017 May 10, 2017
bd85a7f
Merge pull request #58 from SmilePoorCat/master
wizardzhang2017 May 10, 2017
d86337d
Merge pull request #56 from liujk/master
wizardzhang2017 May 10, 2017
6276201
Merge pull request #59 from onlyliuxin/master
wizardzhang2017 May 10, 2017
d6bfae4
Merge pull request #64 from dustheart/master
844028312 May 11, 2017
b20c520
the seventh homework --- JVM4 commandParser
JaneZhou91 May 11, 2017
7c294c0
the seventh homework ---JVM4 javap
JaneZhou91 May 11, 2017
80e60e1
Merge pull request #39 from JaneZhou91/master
zeyuanpinghe May 11, 2017
e9ec7bd
Signed-off-by: 重新提交
May 11, 2017
9a194e9
Tenth week finished
DonaldY May 11, 2017
af6c9ef
the seventh homework --- infixExpr prefixExpr postfixExpr infixToPostfix
JaneZhou91 May 11, 2017
877b31e
整理分支
lzbferrari May 11, 2017
f39b11a
Merge pull request #83 from lzbferrari/master
DonaldY May 12, 2017
3e2febe
Merge pull request #82 from macvis/master
DonaldY May 12, 2017
c4c021c
changes of infixExpr
JaneZhou91 May 12, 2017
7a6fd0d
changes of classFileParser
JaneZhou91 May 12, 2017
9b431a9
Merge branch 'master' of git@github.com:Kingkeivn/coding2017.git
JaneZhou91 May 12, 2017
fe22032
Merge pull request #63 from WANGCANCER/master
gqipan May 12, 2017
6c2e02d
最后一次jvm,先提交一下,回义乌再搞
lzbferrari May 12, 2017
9d037d0
Merge pull request #40 from JaneZhou91/master
zeyuanpinghe May 12, 2017
c961ad9
Merge pull request #213 from 844028312/master
onlyliuxin May 12, 2017
f8e613f
Merge pull request #211 from zavier/master
onlyliuxin May 12, 2017
f963833
Merge pull request #210 from nusubmarine01/master
onlyliuxin May 12, 2017
54b49f5
Merge pull request #209 from jodie-zss/master
onlyliuxin May 12, 2017
3d5148b
Merge pull request #208 from guodongym/master
onlyliuxin May 12, 2017
581641b
Merge pull request #207 from zhanglifeng/master
onlyliuxin May 12, 2017
a88ae3c
Merge pull request #206 from Mr-ChangK/master
onlyliuxin May 12, 2017
caecb20
Merge pull request #204 from MrGPanPan/master
onlyliuxin May 12, 2017
81fc1e3
Merge pull request #203 from diliuzuzhanghao/master
onlyliuxin May 12, 2017
105152c
Merge pull request #202 from DonaldY/master
onlyliuxin May 12, 2017
bef49f7
Merge pull request #201 from kingkeivn/master
onlyliuxin May 12, 2017
a18503d
Merge pull request #200 from wizardzhang2017/master
onlyliuxin May 12, 2017
a6c6c53
Merge pull request #198 from eloiseSJTU/master
onlyliuxin May 12, 2017
fcd62b0
Merge pull request #196 from CoderXLoong/master
onlyliuxin May 12, 2017
569fde0
JVM最后一次课
onlyliuxin May 12, 2017
a02369f
refactor
onlyliuxin May 12, 2017
4a24fd0
Merge branch 'master' of https://github.com/onlyliuxin/coding2017.git
onlyliuxin May 12, 2017
6d48432
最后JVM作业完成
lzbferrari May 12, 2017
fb59586
zl的第六七周作业补交,jvm对字段方法,字节码的解析
zhouliang58 May 13, 2017
82c70a3
Merge pull request #84 from zhouliang58/master
DonaldY May 13, 2017
ed5f2cb
Merge pull request #85 from ipk2015/master
DonaldY May 13, 2017
457e056
add missing files
onlyliuxin May 14, 2017
2038873
Merge pull request #7 from DonaldY/master
zhouliang58 May 14, 2017
6bb6bc2
Merge pull request #7 from DonaldY/master
sdnb May 14, 2017
d1548fb
zl的八九周作业补交,实现jvm执行引擎
zhouliang58 May 14, 2017
027f7f2
JVM 主题:第8次数据结构作业
onlyliuxin May 15, 2017
763e14e
Merge remote-tracking branch 'upstream/master'
lzbferrari May 15, 2017
3f4edcc
Merge pull request #87 from zhouliang58/master
DonaldY May 15, 2017
8e93ea6
Merge branch 'master' of https://github.com/onlyliuxin/coding2017
DonaldY May 15, 2017
09932d6
Tenth week homework---zl
zhouliang58 May 15, 2017
733e5ca
Merge pull request #88 from zhouliang58/master
DonaldY May 15, 2017
14b3384
Merge pull request #8 from DonaldY/master
zhouliang58 May 15, 2017
6772a8c
datastructure finished
DonaldY May 15, 2017
7a7d3f1
Merge branch 'master' of github.com:DonaldY/coding2017
DonaldY May 15, 2017
2ef8cad
Merge remote-tracking branch 'upstream/master'
lzbferrari May 15, 2017
6e67419
11周作业题
lzbferrari May 15, 2017
bbecd6e
个人部分代码提交至库
TerrenceWen0832 May 16, 2017
0ae0680
Merge branch 'master' of https://github.com/DonaldY/coding2017
TerrenceWen0832 May 16, 2017
780e5c0
代码结构修改。个人代码与作业代码分离
TerrenceWen0832 May 16, 2017
133b389
去除个人代码
TerrenceWen0832 May 16, 2017
fe7be15
FileList作业补上
TerrenceWen0832 May 16, 2017
573bfe6
整理格式
lzbferrari May 16, 2017
0f60456
11周数据结构作业
lzbferrari May 16, 2017
eb2f6f1
第十周数据结构作业,代码暂存
TerrenceWen0832 May 17, 2017
0751b68
第十周作业提交
TerrenceWen0832 May 18, 2017
2968d25
11周作业完成
lzbferrari May 18, 2017
ee31430
加点注释
lzbferrari May 18, 2017
de8c82d
Merge pull request #8 from DonaldY/master
sdnb May 18, 2017
821d320
第10周作业完成
ThomasChant May 18, 2017
36158e1
modify binaryTreeUtil
ThomasChant May 18, 2017
13f65e6
jvm最后一课
ThomasChant May 19, 2017
f481229
修改代码结构
zzJohnH May 20, 2017
825aa4a
完成第九周数据结构
zzJohnH May 20, 2017
1ce4b13
Merge pull request #91 from johnChnia/master
DonaldY May 21, 2017
ccb0447
Merge pull request #90 from lzbferrari/master
DonaldY May 21, 2017
163238f
Merge pull request #89 from macvis/master
DonaldY May 21, 2017
1cf3677
JVM主题第9次作业
onlyliuxin May 22, 2017
0b15833
file stage
TerrenceWen0832 May 22, 2017
f1921be
Merge branch 'master' of https://github.com/DonaldY/coding2017
TerrenceWen0832 May 22, 2017
99f58cd
eleventh week homework
DonaldY May 22, 2017
d033f14
Merge branch 'master' of https://github.com/onlyliuxin/coding2017
DonaldY May 22, 2017
84a4b0e
twelfth week homework
DonaldY May 22, 2017
87b8ad6
tree练习作业
May 22, 2017
474b282
week11 finished
ThomasChant May 23, 2017
6cc6a1e
Merge pull request #9 from DonaldY/master
sdnb May 23, 2017
9543900
Merge branch 'master' of https://github.com/DonaldY/coding2017
TerrenceWen0832 May 23, 2017
a2dab54
filestage
TerrenceWen0832 May 23, 2017
ad607a0
Merge pull request #93 from sdnb/master
DonaldY May 23, 2017
c2fe140
Merge pull request #92 from ipk2015/master
DonaldY May 23, 2017
3383591
增加jvm注释
lzbferrari May 23, 2017
690cf3f
Merge remote-tracking branch 'upstream/master'
lzbferrari May 23, 2017
4c3c34a
twelfthweek homework finished
DonaldY May 24, 2017
51162c6
Merge branch 'master' of github.com:DonaldY/coding2017
DonaldY May 24, 2017
53ee7f9
fileStage
TerrenceWen0832 May 24, 2017
fca8481
第十二周作业完成
TerrenceWen0832 May 25, 2017
f1e9d6e
二叉搜索树练习
May 26, 2017
fb27900
Merge pull request #9 from DonaldY/master
zhouliang58 May 27, 2017
74d69b5
week11 finished
ThomasChant May 28, 2017
292d8f1
12周作业
lzbferrari May 28, 2017
986dd4c
Merge pull request #97 from lzbferrari/master
DonaldY May 29, 2017
71acee7
Merge pull request #96 from sdnb/master
DonaldY May 29, 2017
145e70f
Merge pull request #95 from ipk2015/master
DonaldY May 29, 2017
70644ba
Merge pull request #94 from macvis/master
DonaldY May 29, 2017
40a7e2f
最后两次作业
zhouliang58 May 29, 2017
76e6642
Merge pull request #98 from zhouliang58/master
DonaldY May 30, 2017
5c9effa
jvm第八周数据结构作业
zzJohnH May 31, 2017
1567fa9
Merge pull request #99 from 626451284/master
DonaldY Jun 1, 2017
0e0c386
Merge pull request #100 from johnChnia/master
DonaldY Jun 1, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
33 changes: 28 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

#################
## Eclipse
#################
Expand Down Expand Up @@ -215,7 +214,7 @@ pip-log.txt

#Mr Developer
.mr.developer.cfg
.gitignore
#.gitignore
=======


Expand All @@ -235,7 +234,7 @@ hs_err_pid*
.recommenders


*.xml
#*.xml
*.iml
.idea
*.iml
Expand All @@ -248,7 +247,7 @@ rebel-remote.xml
.metadata

target
*.class
#*.class

log
*.log
Expand All @@ -257,8 +256,26 @@ tmp

.metadata
RemoteSystemsTempFiles
.gitignore
#.gitignore


build/
.idea/
.gradle/
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.ear

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

#ide config
.metadata
.recommenders
.idea/
*.iml
Expand All @@ -269,3 +286,9 @@ target
*.DS_Store
liuxin/.DS_Store
liuxin/src/.DS_Store






110 changes: 110 additions & 0 deletions group01/1298552064/src/week05/basic/StackUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
package week05.basic;

import java.util.Stack;

public class StackUtil {

/**
* 假设栈中的元素是Integer, 从栈顶到栈底是 : 5,4,3,2,1 调用该方法后, 元素次序变为: 1,2,3,4,5
* 注意:只能使用Stack的基本操作,即push,pop,peek,isEmpty, 可以使用另外一个栈来辅助
*/
public static void reverse(Stack<Integer> s) {
Stack<Integer> reverseStack = new Stack<>();
Stack<Integer> sequenceStack = new Stack<>();
while(!s.isEmpty()){
reverseStack.push(s.pop());
}

while(!reverseStack.isEmpty()){
sequenceStack.push(reverseStack.pop());
}

while(!sequenceStack.isEmpty()){
s.push(sequenceStack.pop());
}
}

/**
* 删除栈中的某个元素 注意:只能使用Stack的基本操作,即push,pop,peek,isEmpty, 可以使用另外一个栈来辅助
*
* @param o
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void remove(Stack s,Object o) {
Stack tmpStack = new Stack<>();
while(!s.isEmpty()){
if(s.peek().equals(o)){
s.pop();
}else{
tmpStack.push(s.pop());
}
}

while(!tmpStack.isEmpty()){
s.push(tmpStack.pop());
}
}

/**
* 从栈顶取得len个元素, 原来的栈中元素保持不变
* 注意:只能使用Stack的基本操作,即push,pop,peek,isEmpty, 可以使用另外一个栈来辅助
* @param len
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Object[] getTop(Stack s,int len) {
if(len < 0 ||len > s.size()){
throw new IllegalArgumentException("len is invalid argument.");
}

Object[] objects = new Object[len];
Stack tmpStack = new Stack<>();
int index = 0;
while(!s.isEmpty() && index < len){
Object o = s.pop();
tmpStack.push(o);
objects[index++] = o;
}

while(!tmpStack.isEmpty()){
s.push(tmpStack.pop());
}
return objects;
}
/**
* 字符串s 可能包含这些字符: ( ) [ ] { }, a,b,c... x,yz
* 使用堆栈检查字符串s中的括号是不是成对出现的。
* 例如s = "([e{d}f])" , 则该字符串中的括号是成对出现, 该方法返回true
* 如果 s = "([b{x]y})", 则该字符串中的括号不是成对出现的,该方法返回false;
*
* @param s
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static boolean isValidPairs(String s){
String symStr = "";
Stack symStack = new Stack<>();
for(int i = 0; i < s.length(); i++){
if(!Character.isLetter(s.charAt(i))){
symStack.push(s.charAt(i));
symStr += s.charAt(i);
}
}

for(int i=0; i< symStr.length();i++){
char s1 = symStr.charAt(i);
char s2 = (char) symStack.pop();
if(s1 == '(' && s2 != ')'){
return false;
}
if(s1 == '[' && s2 != ']'){
return false;
}
if(s1 == '{' && s2 != '}'){
return false;
}
}

return true;
}
}
68 changes: 68 additions & 0 deletions group01/1298552064/src/week05/test/StackUtilTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package week05.test;

import java.util.Stack;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import week05.basic.StackUtil;

public class StackUtilTest {
@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}


@Test
public void testReverse() {
Stack<Integer> s = new Stack();
s.push(1);
s.push(2);
s.push(3);
s.push(4);
s.push(5);
Assert.assertEquals("[1, 2, 3, 4, 5]", s.toString());
StackUtil.reverse(s);
Assert.assertEquals("[5, 4, 3, 2, 1]", s.toString());
}

@Test
public void testRemove() {
Stack<Integer> s = new Stack();
s.push(1);
s.push(2);
s.push(3);
StackUtil.remove(s, 2);
Assert.assertEquals("[1, 3]", s.toString());
}

@Test
public void testGetTop() {
Stack<Integer> s = new Stack();
s.push(1);
s.push(2);
s.push(3);
s.push(4);
s.push(5);
{
Object[] values = StackUtil.getTop(s, 3);
Assert.assertEquals(5, values[0]);
Assert.assertEquals(4, values[1]);
Assert.assertEquals(3, values[2]);
System.out.println(s.toString());
}
}

@Test
public void testIsValidPairs() {
Assert.assertTrue(StackUtil.isValidPairs("([e{d}f])"));
Assert.assertFalse(StackUtil.isValidPairs("([b{x]y})"));
}

}
102 changes: 102 additions & 0 deletions group01/1298552064/src/week06/basic/InfixExpr.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package week06.basic;

import java.util.List;
import java.util.Stack;

public class InfixExpr {
private String expr = null;

public InfixExpr(String expr) {
this.expr = expr;
}

/**
* 计算
* @param operator 运算符
* @param i1 操作数1
* @param i2 操作数2
* @return
*/
private int cal(char operator, int i1, int i2){
int result = 0;
switch(operator){
case '+' : result = i1 + i2 ; break;
case '-' : result = i1 - i2 ; break;
case '*' : result = i1 * i2 ; break;
case '/' :
if(i1 == 0){
throw new ArithmeticException("除数不能为0");
}
result = i1 / i2 ; break;
}
return result;
}

public float evaluate() {
TokenParser tokenParser = new TokenParser();
List<Token> tokens = tokenParser.parse(expr);
Stack<Token> operatorStack = new Stack<>();
Stack<Integer> operandStack = new Stack<>();
for(Token token : tokens){
if(token.isNumber()){
operandStack.push(token.getIntValue());
continue;
}

if(token.isOperator()){
if(operatorStack.isEmpty()){
operatorStack.push(token);
continue;
}

Token pre = operatorStack.peek();
boolean hasHigherPriority = token.hasHigherPriority(pre);
if(hasHigherPriority){
operatorStack.push(token);
}else{
int n2 = operandStack.pop();
int n1 = operandStack.pop();
String operator = operatorStack.pop().value;
operatorStack.push(token);
operandStack.push(cal(operator.charAt(0), n1, n2));
}
}
}

while(!operatorStack.isEmpty()){
if(operatorStack.size() == 1){
int n2 = operandStack.pop();
int n1 = operandStack.pop();
String operator = operatorStack.pop().value;
operandStack.push(cal(operator.charAt(0), n1, n2));
break;
}

Token cur = operatorStack.pop();
Token pre = operatorStack.pop();
if(cur.hasHigherPriority(pre)){
int n2 = operandStack.pop();
int n1 = operandStack.pop();
operandStack.push(cal(cur.value.charAt(0), n1, n2));

operatorStack.push(pre);
}else{
int n3 = operandStack.pop();
int n2 = operandStack.pop();
int n1 = operandStack.pop();
operandStack.push(cal(pre.value.charAt(0), n1, n2));
operandStack.push(n3);

operatorStack.push(cur);
}

}
return (float)operandStack.pop();
}

public static void main(String[] args) {
InfixExpr expr = new InfixExpr("10-2*3+50");
System.out.println(expr.evaluate());
}

}
Loading