目錄
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...