什麼是棧?簡單的說是乙個後進先出的表,類似於彈夾,後入的子彈先打出來。
下面是棧的一些具體操作步驟:
首先是棧的結構定義:
typedef int selemtype;
typedef struct sqstack, *sq;
棧的初始化、建立操作:
sq initstack(sq s)
s->top = -1;
printf("棧建立成功!!");
return s;
}
棧的壓入操作:
bool pushstack(sq s, selemtype e)
s->top++;
s->data[s->top] = e;
return true;
}
棧的彈出操作:
int popstack(sq s)
selemtype e = s->data[s->top--];
return e;
}
有時候我們需要倆個空間需求相反的棧,我們會使用棧的空間共享結構:
這種結構將陣列分為倆部分,一棧和二棧,採用倆個棧頂標記,乙個標記在前面,乙個標記在後面。
下面是具體的操作:
結構體定義操作:
typedef int elemtype;
typedef structsqdoublestack, *sqdu;
初始化、建立操作:
sqdu initstack(sqdu q)
printf("該棧建立成功!!\n");
q->top1 = -1;
q->top2 = maxsize;
return q;
}
壓入操作:
void pushstack(sqdu q, elemtype e, elemtype stack_number)
if(stack_number == 1)else
}
彈出操作:
int popstack(sqdu q, elemtype stack_number)else
}elseelse
}}
資料結構(棧 順序儲存 )
棧是特殊的線性表,規定插入和刪除在同一端進行 進行插入和刪除的那一端成為棧頂,另一端為棧底 插入為進棧,刪除為出棧 先進後出 ps 例如 abc進棧 出棧共有幾種情況 上溢 超出規定的空間大小還進行插入操作 下溢 棧中元素已經用完了還進行刪除操作 include include include de...
順序儲存 資料結構 棧
備註 以列表為基礎進行對此的封裝,以便達到棧的效果及作用 1 2棧的順序儲存結構 3重點 4 56 自定義棧異常 7class stackerror exception 8pass910 基於列表實現順序棧 11class sstack 12def init self 13 約定列表的最後乙個元素為...
資料結構 棧的順序儲存
棧是一種後進先出的資料結構,也就是說他不像陣列那樣子,可以在中間插入,棧只能夠在上乙個存入資料的後面再存資料,而且只能取現進去的資料。棧簡稱lifo結構。棧是限定僅在表位進行插入和刪除操作的線性表。允許插入和刪除的一端叫棧頂,另一端叫棧底,不含任何元素的叫空棧。棧的插入操作,叫做進棧,也稱作壓棧,入...