資料結構 棧小結

2021-08-10 14:52:33 字數 2075 閱讀 9124

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 時間完成操作。先進先出 佇列可以使用陣列與鍊錶實現 陣列實現 其實陣列實現就是我們常說的迴圈佇列,迴圈佇列的應用很多,比如作為緩衝區使用,核心...