線性表順序儲存之兩棧共享記憶體

2021-09-26 18:44:38 字數 841 閱讀 6161

目錄

1.兩棧共享記憶體

2.入棧操作

3.出棧操作

4.列印棧的內容

5.主函式

背       景:1.兩個棧資料結構相同;

2.其中乙個棧已經滿了,而另乙個棧還剩很多儲存空間;

3.基於2很容易造成儲存空間的浪費,基於1、2可以採用兩棧共享同一陣列的方式解決上述問題。

實現要點:1.定義乙個大的陣列,陣列長度為m。陣列下標為0的位置為棧1的棧底,陣列下標為(m-1)為棧2的棧底;

2.定義兩個棧頂top1和top2,儲存資料時向中間延伸。

3.top1的初始值為-1.top2的初始值為m。在入棧過程中top1是 遞增的,top2是遞減的。

sstack* pushin(sstack *p,int e,int stacknumber)

if(stacknumber==1)

else if(stacknumber == 2)

return p;

}

sstack* popout(sstack *p,int stacknumber)

p->top1--;

} else if(stacknumber == 2)

p->top2++;

} return p;

}

int printfs(sstack p) 

while(p.top2!=m)

return 0;

}

int main()

線性表之順序儲存

typedef struct sqlist 或typedef struct sqlist 或 不採用結構體的形式 elemtype elem size int length 構造乙個空的順序表。構造乙個空的線性表 status initlist sqlist l 在順序表在第i個位置前插入元素e。在...

線性表(二) 棧之順序棧

一 定義棧的基類 棧的基類 template class stack 判斷棧是否為空 virtual bool empty 0 棧中元素的大小 virtual size t size 0 獲取棧頂元素 virtual t top 0 彈出棧頂元素 virtual t pop 0 入棧 virtual...

線性表 順序儲存結構之 順序表

順序表 用順序方法儲存的線性表也叫做順序表 如果乙個線性表用一組連續的儲存單元依次儲存線性表的資料元素,那麼這個表就是順序表。類似陣列 資料元素在計算機內 物理位置相鄰 例 如果用 address ai 表示資料元素ai的儲存位置,l表示資料元素占用的儲存單元,則 address ai addres...