chore: update driver code (#1265)

This commit is contained in:
khoaxuantu
2024-04-10 21:38:48 +07:00
committed by GitHub
parent a3ee733e7b
commit 6404a53fc6
18 changed files with 439 additions and 421 deletions

View File

@ -109,36 +109,37 @@ class ArrayDeque
end
### Driver Code ###
if __FILE__ == $0
# 初始化双向队列
deque = ArrayDeque.new(10)
deque.push_last(3)
deque.push_last(2)
deque.push_last(5)
puts "双向队列 deque = #{deque.to_array}"
# 初始化双向队列
deque = ArrayDeque.new(10)
deque.push_last(3)
deque.push_last(2)
deque.push_last(5)
puts "双向队列 deque = #{deque.to_array}"
# 访问元素
peek_first = deque.peek_first
puts "队首元素 peek_first = #{peek_first}"
peek_last = deque.peek_last
puts "队尾元素 peek_last = #{peek_last}"
# 访问元素
peek_first = deque.peek_first
puts "队首元素 peek_first = #{peek_first}"
peek_last = deque.peek_last
puts "队尾元素 peek_last = #{peek_last}"
# 元素入队
deque.push_last(4)
puts "元素 4 队尾入队后 deque = #{deque.to_array}"
deque.push_first(1)
puts "元素 1 队尾入队后 deque = #{deque.to_array}"
# 元素
deque.push_last(4)
puts "元素 4 队尾队后 deque = #{deque.to_array}"
deque.push_first(1)
puts "元素 1 队尾队后 deque = #{deque.to_array}"
# 元素
pop_last = deque.pop_last
puts "队尾出队元素 = #{pop_last}队尾队后 deque = #{deque.to_array}"
pop_first = deque.pop_first
puts "队尾出队元素 = #{pop_first}队尾队后 deque = #{deque.to_array}"
# 元素出队
pop_last = deque.pop_last
puts "队尾出队元素 = #{pop_last},队尾出队后 deque = #{deque.to_array}"
pop_first = deque.pop_first
puts "队尾出队元素 = #{pop_first},队尾出队后 deque = #{deque.to_array}"
# 获取双向队列的长度
size = deque.size
puts "双向队列长度 size = #{size}"
# 获取双向队列的长度
size = deque.size
puts "双向队列长度 size = #{size}"
# 判断双向队列是否为空
is_empty = deque.is_empty?
puts "双向队列是否为空 = #{is_empty}"
# 判断双向队列是否为空
is_empty = deque.is_empty?
puts "双向队列是否为空 = #{is_empty}"
end

View File

@ -69,38 +69,39 @@ class ArrayQueue
end
### Driver Code ###
if __FILE__ == $0
# 初始化队列
queue = ArrayQueue.new(10)
# 初始化队列
queue = ArrayQueue.new(10)
# 元素入队
queue.push(1)
queue.push(3)
queue.push(2)
queue.push(5)
queue.push(4)
puts "队列 queue = #{queue.to_array}"
# 元素入队
queue.push(1)
queue.push(3)
queue.push(2)
queue.push(5)
queue.push(4)
puts "队列 queue = #{queue.to_array}"
# 访问队首元素
peek = queue.peek
puts "队首元素 peek = #{peek}"
# 访问队首元素
peek = queue.peek
puts "元素 peek = #{peek}"
# 元素出队
pop = queue.pop
puts "队元素 pop = #{pop}"
puts "出队后 queue = #{queue.to_array}"
# 元素出队
pop = queue.pop
puts "出队元素 pop = #{pop}"
puts "出队后 queue = #{queue.to_array}"
# 获取队列的长度
size = queue.size
puts "队列长度 size = #{size}"
# 获取队列的长度
size = queue.size
puts "队列长度 size = #{size}"
# 判断队列是否为空
is_empty = queue.is_empty?
puts "队列是否为空 = #{is_empty}"
# 判断队列是否为空
is_empty = queue.is_empty?
puts "队列是否为空 = #{is_empty}"
# 测试环形数组
for i in 0...10
queue.push(i)
queue.pop
puts "#{i} 轮入队 + 出队后 queue = #{queue.to_array}"
# 测试环形数组
for i in 0...10
queue.push(i)
queue.pop
puts "#{i} 轮入队 + 出队后 queue = #{queue.to_array}"
end
end

View File

@ -47,31 +47,32 @@ class ArrayStack
end
### Driver Code ###
if __FILE__ == $0
# 初始化栈
stack = ArrayStack.new
# 初始化
stack = ArrayStack.new
# 元素入
stack.push(1)
stack.push(3)
stack.push(2)
stack.push(5)
stack.push(4)
puts "栈 stack = #{stack.to_array}"
# 元素入栈
stack.push(1)
stack.push(3)
stack.push(2)
stack.push(5)
stack.push(4)
puts "栈 stack = #{stack.to_array}"
# 访问栈顶元素
peek = stack.peek
puts "栈顶元素 peek = #{peek}"
# 访问栈顶元素
peek = stack.peek
puts "元素 peek = #{peek}"
# 元素出栈
pop = stack.pop
puts "栈元素 pop = #{pop}"
puts "出栈后 stack = #{stack.to_array}"
# 元素出栈
pop = stack.pop
puts "出栈元素 pop = #{pop}"
puts "出栈后 stack = #{stack.to_array}"
# 获取栈的长度
size = stack.size
puts "栈的长度 size = #{size}"
# 获取栈的长度
size = stack.size
puts "的长度 size = #{size}"
# 判断是否为空
is_empty = stack.is_empty?
puts "栈是否为空 = #{is_empty}"
# 判断是否为空
is_empty = stack.is_empty?
puts "是否为空 = #{is_empty}"
end

View File

@ -5,37 +5,38 @@ Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
### Driver Code ###
if __FILE__ == $0
# 初始化双向队列
# Ruby 没有内直的双端队列,只能把 Array 当作双端队列来使用
deque = []
# 初始化双向队列
# Ruby 没有内直的双端队列,只能把 Array 当作双端队列来使用
deque = []
# 元素如队
deque << 2
deque << 5
deque << 4
# 请注意由于是数组Array#unshift 方法的时间复杂度为 O(n)
deque.unshift(3)
deque.unshift(1)
puts "双向队列 deque = #{deque}"
# 元素如队
deque << 2
deque << 5
deque << 4
# 请注意由于是数组Array#unshift 方法的时间复杂度为 O(n)
deque.unshift(3)
deque.unshift(1)
puts "双向队列 deque = #{deque}"
# 访问元素
peek_first = deque.first
puts "队首元素 peek_first = #{peek_first}"
peek_last = deque.last
puts "队尾元素 peek_last = #{peek_last}"
# 访问元素
peek_first = deque.first
puts "队首元素 peek_first = #{peek_first}"
peek_last = deque.last
puts "队尾元素 peek_last = #{peek_last}"
# 元素出队
# 请注意,由于是数组, Array#shift 方法的时间复杂度为 O(n)
pop_front = deque.shift
puts "队首出队元素 pop_front = #{pop_front},队首出队后 deque = #{deque}"
pop_back = deque.pop
puts "队尾出队元素 pop_back = #{pop_back}, 队尾出队后 deque = #{deque}"
# 元素出队
# 请注意,由于是数组, Array#shift 方法的时间复杂度为 O(n)
pop_front = deque.shift
puts "队首出队元素 pop_front = #{pop_front},队首出队后 deque = #{deque}"
pop_back = deque.pop
puts "队尾出队元素 pop_back = #{pop_back}, 队尾出队后 deque = #{deque}"
# 获取双向队列的长度
size = deque.length
puts "双向队列长度 size = #{size}"
# 获取双向队列的长度
size = deque.length
puts "双向队列长度 size = #{size}"
# 判断双向队列是否为空
is_empty = size.zero?
puts "双向队列是否为空 = #{is_empty}"
# 判断双向队列是否为空
is_empty = size.zero?
puts "双向队列是否为空 = #{is_empty}"
end

View File

@ -132,36 +132,37 @@ class LinkedListDeque
end
### Driver Code ###
if __FILE__ == $0
# 初始化双向队列
deque = LinkedListDeque.new
deque.push_last(3)
deque.push_last(2)
deque.push_last(5)
puts "双向队列 deque = #{deque.to_array}"
# 初始化双向队列
deque = LinkedListDeque.new
deque.push_last(3)
deque.push_last(2)
deque.push_last(5)
puts "双向队列 deque = #{deque.to_array}"
# 访问元素
peek_first = deque.peek_first
puts "队首元素 peek_first = #{peek_first}"
peek_last = deque.peek_last
puts "队首元素 peek_last = #{peek_last}"
# 访问元素
peek_first = deque.peek_first
puts "队首元素 peek_first = #{peek_first}"
peek_last = deque.peek_last
puts "队首元素 peek_last = #{peek_last}"
# 元素入队
deque.push_last(4)
puts "元素 4 队尾入队后 deque = #{deque.to_array}"
deque.push_first(1)
puts "元素 1 队首入队后 deque = #{deque.to_array}"
# 元素
deque.push_last(4)
puts "元素 4 队尾队后 deque = #{deque.to_array}"
deque.push_first(1)
puts "元素 1 队首队后 deque = #{deque.to_array}"
# 元素
pop_last = deque.pop_last
puts "队尾出队元素 = #{pop_last}, 队尾队后 deque = #{deque.to_array}"
pop_first = deque.pop_first
puts "队首出队元素 = #{pop_first}队首队后 deque = #{deque.to_array}"
# 元素出队
pop_last = deque.pop_last
puts "队尾出队元素 = #{pop_last}, 队尾出队后 deque = #{deque.to_array}"
pop_first = deque.pop_first
puts "队首出队元素 = #{pop_first},队首出队后 deque = #{deque.to_array}"
# 获取双向队列的长度
size = deque.size
puts "双向队列长度 size = #{size}"
# 获取双向队列的长度
size = deque.size
puts "双向队列长度 size = #{size}"
# 判断双向队列是否为空
is_empty = deque.is_empty?
puts "双向队列是否为空 = #{is_empty}"
# 判断双向队列是否为空
is_empty = deque.is_empty?
puts "双向队列是否为空 = #{is_empty}"
end

View File

@ -70,31 +70,32 @@ class LinkedListQueue
end
### Driver Code ###
if __FILE__ == $0
# 初始化队列
queue = LinkedListQueue.new
# 初始化队列
queue = LinkedListQueue.new
# 元素如队
queue.push(1)
queue.push(3)
queue.push(2)
queue.push(5)
queue.push(4)
puts "队列 queue = #{queue.to_array}"
# 元素如队
queue.push(1)
queue.push(3)
queue.push(2)
queue.push(5)
queue.push(4)
puts "队列 queue = #{queue.to_array}"
# 访问队首元素
peek = queue.peek
puts "队首元素 front = #{peek}"
# 访问队首元素
peek = queue.peek
puts "元素 front = #{peek}"
# 元素出队
pop_front = queue.pop
puts "队元素 pop = #{pop_front}"
puts "出队后 queue = #{queue.to_array}"
# 元素出队
pop_front = queue.pop
puts "出队元素 pop = #{pop_front}"
puts "出队后 queue = #{queue.to_array}"
# 获取队列的长度
size = queue.size
puts "队列长度 size = #{size}"
# 获取队列的长度
size = queue.size
puts "队列长度 size = #{size}"
# 判断队列是否为空
is_empty = queue.is_empty?
puts "队列是否为空 = #{is_empty}"
# 判断队列是否为空
is_empty = queue.is_empty?
puts "队列是否为空 = #{is_empty}"
end

View File

@ -56,31 +56,32 @@ class LinkedListStack
end
### Driver Code ###
if __FILE__ == $0
# 初始化栈
stack = LinkedListStack.new
# 初始化
stack = LinkedListStack.new
# 元素入
stack.push(1)
stack.push(3)
stack.push(2)
stack.push(5)
stack.push(4)
puts "栈 stack = #{stack.to_array}"
# 元素入栈
stack.push(1)
stack.push(3)
stack.push(2)
stack.push(5)
stack.push(4)
puts "栈 stack = #{stack.to_array}"
# 访问栈顶元素
peek = stack.peek
puts "栈顶元素 peek = #{peek}"
# 访问栈顶元素
peek = stack.peek
puts "元素 peek = #{peek}"
# 元素出栈
pop = stack.pop
puts "栈元素 pop = #{pop}"
puts "出栈后 stack = #{stack.to_array}"
# 元素出栈
pop = stack.pop
puts "出栈元素 pop = #{pop}"
puts "出栈后 stack = #{stack.to_array}"
# 获取栈的长度
size = stack.size
puts "栈的长度 size = #{size}"
# 获取栈的长度
size = stack.size
puts "的长度 size = #{size}"
# 判断是否为空
is_empty = stack.is_empty?
puts "栈是否为空 = #{is_empty}"
# 判断是否为空
is_empty = stack.is_empty?
puts "是否为空 = #{is_empty}"
end

View File

@ -5,33 +5,34 @@ Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
### Driver Code ###
if __FILE__ == $0
# 初始化队列
# Ruby 内置的队列Thread::Queue) 没有 peek 和遍历方法,可以把 Array 当作队列来使用
queue = []
# 初始化队列
# Ruby 内置的队列Thread::Queue) 没有 peek 和遍历方法,可以把 Array 当作队列来使用
queue = []
# 元素入队
queue.push(1)
queue.push(3)
queue.push(2)
queue.push(5)
queue.push(4)
puts "队列 queue = #{queue}"
# 元素入队
queue.push(1)
queue.push(3)
queue.push(2)
queue.push(5)
queue.push(4)
puts "队列 queue = #{queue}"
# 访问队列元素
peek = queue.first
puts "队首元素 peek = #{peek}"
# 访问队列元素
peek = queue.first
puts "队首元素 peek = #{peek}"
# 元素出队
# 清注意由于是数组Array#shift 方法时间复杂度为 O(n)
pop = queue.shift
puts "出队元素 pop = #{pop}"
puts "出队后 queue = #{queue}"
# 元素出队
# 清注意由于是数组Array#shift 方法时间复杂度为 O(n)
pop = queue.shift
puts "出队元素 pop = #{pop}"
puts "出队后 queue = #{queue}"
# 获取队列的长度
size = queue.length
puts "队列长度 size = #{size}"
# 获取队列的长度
size = queue.length
puts "队列长度 size = #{size}"
# 判断队列是否为空
is_empty = queue.empty?
puts "队列是否为空 = #{is_empty}"
# 判断队列是否为空
is_empty = queue.empty?
puts "队列是否为空 = #{is_empty}"
end

View File

@ -5,32 +5,33 @@ Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
### Driver Code ###
if __FILE__ == $0
# 初始化栈
# Ruby 没有内置的栈类,可以把 Array 当作栈来使用
stack = []
# 初始化
# Ruby 没有内置的栈类,可以把 Array 当作栈来使用
stack = []
# 元素入
stack << 1
stack << 3
stack << 2
stack << 5
stack << 4
puts "栈 stack = #{stack}"
# 元素入栈
stack << 1
stack << 3
stack << 2
stack << 5
stack << 4
puts "栈 stack = #{stack}"
# 访问栈顶元素
peek = stack.last
puts "栈顶元素 peek = #{peek}"
# 访问栈顶元素
peek = stack.last
puts "元素 peek = #{peek}"
# 元素出栈
pop = stack.pop
puts "栈元素 pop = #{pop}"
puts "出栈后 stack = #{stack}"
# 元素出栈
pop = stack.pop
puts "出栈元素 pop = #{pop}"
puts "出栈后 stack = #{stack}"
# 获取栈的长度
size = stack.length
puts "栈的长度 size = #{size}"
# 获取栈的长度
size = stack.length
puts "的长度 size = #{size}"
# 判断是否为空
is_empty = stack.empty?
puts "栈是否为空 = #{is_empty}"
# 判断是否为空
is_empty = stack.empty?
puts "是否为空 = #{is_empty}"
end