| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- package main
 
- // Stack ...
 
- type Stack []int
 
- func (s Stack) Len() int           { return len(s) }
 
- func (s Stack) Less(i, j int) bool { return s[i] < s[j] }
 
- func (s Stack) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
 
- // Top ...
 
- func (s Stack) Top() int {
 
- 	return s[len(s)-1]
 
- }
 
- // Empty ...
 
- func (s Stack) Empty() bool {
 
- 	return len(s) == 0
 
- }
 
- // Push ...
 
- func (s *Stack) Push(val interface{}) {
 
- 	*s = append(*s, val.(int))
 
- }
 
- // Pop ...
 
- func (s *Stack) Pop() interface{} {
 
- 	top := s.Top()
 
- 	*s = (*s)[:len(*s)-1]
 
- 	return top
 
- }
 
- // Stack64 ...
 
- type Stack64 []int64
 
- func (s Stack64) Len() int           { return len(s) }
 
- func (s Stack64) Less(i, j int) bool { return s[i] < s[j] }
 
- func (s Stack64) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
 
- // Top ...
 
- func (s Stack64) Top() int64 {
 
- 	return s[len(s)-1]
 
- }
 
- // Empty ...
 
- func (s Stack64) Empty() bool {
 
- 	return len(s) == 0
 
- }
 
- // Push ...
 
- func (s *Stack64) Push(val interface{}) {
 
- 	*s = append(*s, val.(int64))
 
- }
 
- // Pop ...
 
- func (s *Stack64) Pop() interface{} {
 
- 	top := s.Top()
 
- 	*s = (*s)[:len(*s)-1]
 
- 	return top
 
- }
 
 
  |