typedef struct{ int left_pos; //左邊棧頂,靠0方向 int right_pos; //右邊棧頂,靠MAXSIZE-1方向 int split_pos; //左右棧分割位置 int stack[MAXSIZE];}DoubleStack;初始的時候,為了能夠高效方便的讓2個棧進資料,建議把split_pos設定為MAXSIZE/2,也即中間,並初始化 left_pos,right_pos也為MAXSIZE/2;棧空判斷left_pos==split_pos,則左棧空;right_pos==split_pos右棧空棧非空left_pos split_pos進棧操作:左:如果left_pos為0;right_pos不為MAXSIZE-1;則把棧所有資料向右移(MAXSIZE-right_pos)/2;為什麼不移1,?是為了效率考慮,比如只移1的話,左邊又有一個元素進棧,則還要以一次,效率低下。右:同左邊相同的考慮方案,
typedef struct{ int left_pos; //左邊棧頂,靠0方向 int right_pos; //右邊棧頂,靠MAXSIZE-1方向 int split_pos; //左右棧分割位置 int stack[MAXSIZE];}DoubleStack;初始的時候,為了能夠高效方便的讓2個棧進資料,建議把split_pos設定為MAXSIZE/2,也即中間,並初始化 left_pos,right_pos也為MAXSIZE/2;棧空判斷left_pos==split_pos,則左棧空;right_pos==split_pos右棧空棧非空left_pos split_pos進棧操作:左:如果left_pos為0;right_pos不為MAXSIZE-1;則把棧所有資料向右移(MAXSIZE-right_pos)/2;為什麼不移1,?是為了效率考慮,比如只移1的話,左邊又有一個元素進棧,則還要以一次,效率低下。右:同左邊相同的考慮方案,