順序棧是指利用順序儲存結構實現的棧。用乙個陣列來順序儲存棧中元素,乙個整型變數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...