順序棧與鏈棧

2021-08-11 03:25:44 字數 2587 閱讀 4696

順序棧是指利用順序儲存結構實現的棧。用乙個陣列來順序儲存棧中元素,乙個整型變數top來記錄當前棧頂元素在陣列中的位置。

1.結點型別

#define maxlen 100

typedef structseqstack;

2.置空棧演算法

seqstack *initstack(seqstack *s)seqstack;

//建立空棧並初始化

seqstack *initstack()

//判斷棧滿演算法

int stackfull(seqstack *s)

//取棧頂元素演算法

int gettop(seqstack *s)

//元素入棧演算法

void push(seqstack *s,int x)

else

printf("入棧失敗!\n");

}//元素出棧演算法

void pop(seqstack *s)

else

printf("出棧失敗!\n");

}//操作執行

int main()

printf("判斷順序棧是否為滿?\n");

stackfull(s);

printf("取棧頂元素:\n");

a=gettop(s);

printf("此時的棧頂元素是%d\n",a);

printf("元素出棧\n");

pop(s);

return 0;}鏈棧

鏈棧是指採用鏈結儲存結構實現的棧。棧中每乙個元素單獨占用相應大小的儲存空間,每個儲存儲存單元在儲存中元素ai的同時,也儲存其邏輯後繼ai+1的儲存位址;所有儲存單元可以占用連續或不連續的儲存區域,也稱每個儲存單元為鏈棧中的結點。其中,data域是資料域,用來存放資料元素ai的值,next域是指標域,用來存放ai的直接後繼ai+1的儲存位址。

下面為實現順序棧的基本操作

#include

#include

#define maxlen 100

typedef structseqstack;

//建立空棧並初始化

seqstack *initstack()

//判斷棧滿演算法

int stackfull(seqstack *s)

//取棧頂元素演算法

int gettop(seqstack *s)

//元素入棧演算法

void push(seqstack *s,int x)

else

printf("入棧失敗!\n");

}//元素出棧演算法

void pop(seqstack *s)

else

printf("出棧失敗!\n");

}//操作執行

int main()

printf("判斷順序棧是否為滿?\n");

stackfull(s);

printf("取棧頂元素:\n");

a=gettop(s);

printf("此時的棧頂元素是%d\n",a);

printf("元素出棧\n");

pop(s);

return 0;

}順序佇列-主要是迴圈佇列

#include

#include

#define maxlen 100

typedef structseqqueue;

//建立空迴圈佇列

seqqueue *setqueue()

//判隊滿演算法

int queuefull(seqqueue *q)

//判隊空演算法

int queueempty(seqqueue *q)

//入隊演算法

void add(seqqueue *s,int x)

else

printf("queue full!\n");

}//出隊演算法

void delete(seqqueue *s)

執行**如下:

#include

#include

#define maxlen 100

typedef structseqqueue;

//建立空迴圈佇列

seqqueue *setqueue()

//判隊滿演算法

int queuefull(seqqueue *q)

else

}//判隊空演算法

int queueempty(seqqueue *q)

else

}//入隊演算法

void add(seqqueue *q,int x)

else

printf("queue full!\n");

}//出隊演算法

void delete(seqqueue *q)

else

}int main()

scanf("%d",&x);

add(s,x);

printf("判斷迴圈佇列是否已滿?\n");

s=queuefull(s);

printf("出隊\n");    

delete(s);

return 0;

}執行結果如圖:

順序棧與鏈棧

首先是順序棧 include include define maxsize 100 typedef structshunxu shunxu chuangjian 建立順序表 int empty shunxu s 入 int ru shunxu s,int n 插入操作,執行成功返回1,不成功返回0 ...

棧,順序棧,鏈棧

棧作為一種限定性線性表,是將表的插入刪除限制為僅在表的一端進行,通常將表中允許插入刪除的一端叫做棧頂 top 因此棧頂的當前位置是動態變化的。棧的另一端叫做棧底 bottom 當棧中沒有元素時稱為空棧。插入操作稱為進棧或入棧,刪除操作稱為出棧或退棧。棧是先進後出的線性表,簡稱為lifo表。棧主要有兩...

棧 順序棧 鏈棧

棧 順序棧 鏈棧 分別用順序表和煉表實現棧,完成入棧 出棧 窺探棧頂元素等操作 commom.h ifndef common h define commom h include include include include include define elemtype int void swap...