資料結構筆記(一) 線性表(棧)

2021-09-12 17:09:31 字數 1668 閱讀 2590

棧的定義:棧(stack)是限定僅在表尾進行插入和刪除的線性表

棧的插入操作,也叫入棧、壓棧、進棧;

棧的刪除操作,也叫出棧、彈棧。

首先我們來看棧的抽象資料型別

adt 棧(stack)

data

同線性表。元素具有相同的型別,相鄰元素具有前驅和後繼關係。

operation

initstack(*s):初始化操作,建立乙個空棧。

destroystack(*s):若棧存在,則銷毀它。

clearstack(*s):清空棧。

stackempty(s):若棧為空,返回ture,否則返回false。

gettop(s,*e):若棧s存在且非空,用e返回s的棧頂元素。

push(*s,e):若棧s存在,插入新元素e到棧s中並成為棧頂元素

pop(*s,*e):刪除棧s中棧頂元素,並用e返回其值。

stacklength(s):返回棧s的元素個數。

endadt

棧的結構定義:

typedef int selemtype;

typedef struct

sqstack;

棧的順序儲存結構——進棧操作

//插入元素e為新的棧頂元素

status push(sqstack *s,selemtype e)

s->top++; //棧頂元素加1.

s->data[s->top]=e; //將新插入元素賦值給棧頂空間

return ok;

}

//若棧不空,則刪除s的棧頂元素,用e返回其值

status pop(sqstack *s,selemtype *e)

//兩棧共享空間結構

typedef struct

sqdoublestack;

//插入元素e為新的棧頂元素

status pus(sqdoublestack *s,selemtype e,int stacknumber)

//若棧不空,則刪除s的棧頂元素,用e返回其值,並返回ok;否則返回error

status pop(sqdoublestack *s,selemtype *e,int stacknumber)

else if(stacknumber==2)

return ok;

}

棧的鏈式儲存結構:

typedef struct stacknode

stacknode,*linkstackptr;

typedef struct linkstack

linkstack;

//插入元素e為新的棧頂元素

status push(linkstack *s,selemtype e)

//棧的鏈式儲存結構——出棧操作

//操作結果:若棧不空,刪除s的棧頂元素,用e返回其值,並返回ok;否則返回error

status pop(linkstack *s,selemtype *e)

資料結構 一 線性表

一 線性表的定義 線性結構的特點是 在資料元素的非空有限集中,1 存在唯一的乙個被成為 第乙個 的資料元素 2 存在唯一的乙個被成為 最後乙個 的資料元素 3 除了第乙個之外,其他的元素均只有乙個前驅,除了最後乙個以外,其他的元素均只有乙個後繼 線性表是最常用且最簡單的一種資料結構,乙個線性表是n個...

資料結構筆記(一) 線性表(順序表 鍊錶)

資料結構筆記 一 線性表 線性表就是乙個一維的表,其中各個元素之間是一對一的。對線性表的定義 adt 線性表 list data 線性表的資料物件集合 a1,a2,an 每個元素的型別均為datatype。其中,出來第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,出來最後乙個元素an外,每乙個...

C 資料結構實驗一線性表

實驗內容 1.建立乙個順序表,隨機產生 10 個 100 以內的整數,並按要求完成 1 編寫顯示函式,在螢幕上顯示順序表中的 10 個整數 2 編寫查詢函式,從鍵盤輸入任一整數在順序表中查詢,若找到,返回該元素在順序表中的位置,否則提示無此元素 3 編寫插入函式,從鍵盤輸入待插入元素及插入位置,將完...