class Stack{
constructor(){
this.items = []//存储栈元素的数组
this.length = 0//栈中元素
}
push(item){
//入栈操作
this.items.push(item)
this.length++;
}
pop(){
//出栈操作
let temp = this.items.pop()
this.length--;
return temp
}
}
let mystack = new Stack()
mystack.push('hush')
mystack.push('krys')
mystack.push('liang')
mystack.push('stefanie')
console.log(mystack.items)
let temp = mystack.pop()
console.log(temp,'..',mystack.items)
//初始化结点
class Node{
constructor(key){
this.next = null
this.key = key
}
}
//初始化单链表
class List{
constructor(){
this.head = null
this.length = 0
}
//创建结点
static createNode(key){
return new Node(key)
}
//往头部插入数据
push(node){
if (this.head){
//此时head有指向的结点
node.next = this.head
} else {
node.next = null
}
this.head = node
this.length++
}
//删除结点
pop(){
//删除头结点
this.head = this.head.next
this.length --;
return;
}
}
let node1 = new Node('krysliang'),node2 = new Node('wanlingliang')
let list = new List()
list.push(node1)
list.push((node2))
console.log(list.head)
list.pop()
console.log(list.head)
var isValid = function(s) {
let right = [')','}',']']
if(s.length==0) return true;
if(s.length==1) return false;
let stack = [],flag = true
for (let i = 0;i0){//如果此时栈中还有数据也就是还有未匹配的括号
flag = false
}
if (flag){
return true
} else {
return false
}
};
class Quene{
constructor() {
this.items = []//用来装队列的数组
this.length = 0//队列长度
}
enquene(data){
//入队
this.items.push(data)
this.length++
}
dequene(){
let item = this.items.shift()
this.length--
return item
}
}
let quene = new Quene()
quene.enquene(1)
quene.enquene(2)
quene.enquene(3)
quene.enquene(4)
quene.enquene(5)
console.log(quene.items)
let item = quene.dequene()
console.log(item,quene.items)
class List{
constructor(){
this.head = null
this.length = 0
}
insert(node){
//入队
if (this.head){
let p = this.head.next
let prev = this.head
while (p){
prev = p
p = p.next
}
prev.next = node
} else {
//队列中暂时没有结点
this.head = node
}
this.length ++
}
delete(){
//出队
if (this.head){
let item = this.head.next
this.head = this.head.next
this.length++
return item
}
}
}
let node1 = new Node(1),node2 = new Node(2),node3 = new Node(3)
let list = new List()
list.insert(node1)
list.insert(node2)
list.insert(node3)
console.log(list.head)
let item = list.delete()
console.log(list.head)
class CircularQueue{
constructor(n){
this.items = []
this.n = n
this.head = 0
this.tail = 0
}
enqueue(item){
//入队
//如果队满了就不予以入队,否则入队,tail++
if ((this.tail+1)%this.n == this.head) {
console.log('队满不予以入队',this.items)
return false
}
this.items[this.tail] = item
this.tail = (this.tail+1)%this.n //当前队尾所在的位置
console.log('正常入队',item,this.items)
return true
}
dequene(){
//出队
//如果队空就返回false
if (this.head == this.tail) {
console.log('队空不予以出队')
return false
}
let item = this.items[this.head]
this.items[this.head] = null
this.head = (this.head+1)%this.n
console.log('出队元素',item,'当前队列',this.items)
return item
}
}
let myquene = new CircularQueue(3)
let item1 = myquene.dequene()
myquene.enqueue(1)
myquene.enqueue(2)
myquene.enqueue(3)
let item2 = myquene.dequene()
let item3 = myquene.dequene()
let item4 = myquene.dequene()
myquene.enqueue(4)
myquene.enqueue(5)
myquene.enqueue(6)