1陣列棧
2動態陣列棧
動態陣列棧有兩種實現方法,一種是每次擴充1位並進行複製,插入n個元素的時間複雜度位o(n^2)--1+2+...+n
一種是每次擴充2倍並進行複製,插入n個元素的時間複雜度為0(n)...1+2+4+8...+n,此處使用這種最優化的方案。
3鍊錶棧
4最小棧的優化版
5棧的逆置(只用push和top)
6陣列跨度
7陣列跨度2
8棧排序
9陣列最大面積
class陣列棧 public boolean
isempty()
public boolean
isstackfull()
public void
push(int data)else
}public int
pop()else
}public void
delete()
}
class動態陣列棧
public boolean
isempty()
public boolean
isstackfull()
public void
push(int data)
array[top++]=data;
} public int
pop()
return
array[top--];
}//模擬陣列的擴容,進行二倍擴容
public void
doublestack()
capcity=capcity*2
;array=newarray;
} public void
delete()
}
class鍊錶棧 public void
push(int data)
public int
pop()
}public boolean
isempty()
public int
top()
else return
head.val;}
public void
delete()
}
class最小棧
extends stack
}public integer pop()
public int
getminimum()
}
class棧逆置 private void
insertstack(stackstack, int data)
int tem = stack.pop();
insertstack(stack,data);
stack.push(tem);
}}
class跨度計算;
int newarray = findspan(array);
for (int i:newarray)
}int findspan(int array)
spans[i]=span;
} return spans;
}}
class跨度計算2
if (stack.isempty())p=-1
;else p=stack.pop();
spans[i]=i-p;
stack.push(i);
} return spans;
}}
class棧排序 r.push(tmp);
} return r;
}}
class最大面積
}return res;
}}
資料結構小結 順序棧
棧是資料結構中的一種儲存方式,和棧記憶體沒有什麼關係,它可以存在棧記憶體上,也可以存在堆記憶體上,此篇介紹的順序棧棧就是存在棧記憶體上的。順序棧顧名思義,就是存在記憶體上連續一段位址空間內的棧,和順序表差不多。棧有乙個要求就是先入後出,後入先出。結構很簡單 define size 10 typede...
資料結構 棧和佇列小結
1棧 1 棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表。我們把插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不包含任何元素的棧稱為空棧。棧又稱為後進先出 last in first out 的線性表,簡稱lifo結構。2 棧的儲存結構 由於棧也是線性表,因此線性表的儲存結構...
資料結構小結 (三)棧與佇列
資料結構來具體實現。佇列 queue 也是表,然而,使用佇列時插入在一端進行而在另一端進行刪除操作。對與佇列而言,不論是使用佇列或者使用鍊錶都是快速的o 1 時間完成操作。先進先出 佇列可以使用陣列與鍊錶實現 陣列實現 其實陣列實現就是我們常說的迴圈佇列,迴圈佇列的應用很多,比如作為緩衝區使用,核心...