操作
時間複雜度(t(n))
空間複雜度(s(n))
判斷是否為空
o(1)
o(1)
得到長度
o(1)
o(1)
得到棧頂元素
o(1)
o(1)
壓入元素
o(1)
o(1)
不需要開闢新記憶體或者開闢為常量的記憶體
彈出元素
o(1)
o(1)
反轉順序棧
o(n)
o(1)
氣泡排序
o(n^2)
o(1)
/* 資料結構分析與學習專欄
* 作 者: 高祥
* 完成日期: 2015 年 4 月 3 日
* 版 本 號:007
*任務描述:針對順序棧,實現10個基本操作
* 1:建立順序棧
* 2:判斷順序棧是否為空
* 3:求順序棧的元素個數
* 4:輸出順序棧
* 5:得到順序棧的棧頂元素
* 6:壓入元素
* 7:彈出元素
* 8:反轉當前順序棧
* 9:將順序棧公升序排序
* 10:清空順序棧
*主要函式:
* 1.status initstack(sqstack &s);//初始化棧:為棧分配初始空間
* 2.void reversecreatstack(sqstack &s);//逆序建立棧
* 3.status isempty(sqstack s);//判斷棧是否為空
* 4.int stacklength(sqstack s);//求棧的元素個數
* 5.void output(sqstack s);//輸出棧的元素
* 6.void gettop(sqstack s);//得到棧頂元素
* 7.void push(sqstack &s,elemtype elem);//壓入元素
* 8.void pop(sqstack &s);//彈出元素
* 9.void reversestack(sqstack &s);//反轉棧
* 10.void sortstack(sqstack &s);//棧元素排序
* 11.void clearstack(sqstack &s);//清空棧*/
#include#includeusing namespace std;
#define stack_init_size 100
#define stackincrement 10
#define ok 1
#define false 0
typedef int status;
typedef int elemtype;
typedef struct
sqstack;
status initstack(sqstack&s);//初始化棧:為棧分配初始空間
void reversecreatstack(sqstack&s);//逆序建立棧
status isempty(sqstack s);//判斷棧是否為空
int stacklength(sqstack s);//求棧的元素個數
void output(sqstack s);//輸出棧的元素
void gettop(sqstack s);//得到棧頂元素
void push(sqstack&s,elemtype elem);//壓入元素
void pop(sqstack &s);//彈出元素
void reversestack(sqstack&s);//反轉棧
void sortstack(sqstack&s);//棧元素排序
void clearstack(sqstack&s);//清空棧
void interaction();//輸出操作
int main()
break;
case 2:
if(isempty(s))
else
break;
case 3:
cout<<"棧中的元素個數是:"<>elem;
push(s,elem);
cout<<"壓入元素後的棧為:";
output(s);
break;
case 7:
pop(s);
break;
case 8:
reversestack(s);
cout<<"反轉後的棧為:";
output(s);
break;
case 9:
sortstack(s);
break;
case 10:
clearstack(s);
break;
default:
cout<<"請輸入正確的運算元字:";}}
return 0;}
status initstack(sqstack&s)//初始化棧:為棧分配初始空間
s.top=s.base;//棧頂指標等於棧底指標:表示棧為空
s.stackcapacity=stack_init_size;//容量
s.stacklength=0;//元素個數
return ok;}
void reversecreatstack(sqstack&s)//逆序建立棧
s.stacklength=length;
cout<<"建立的棧為:";
output(s);}
status isempty(sqstack s)//判斷棧是否為空
return false;}
int stacklength(sqstack s)//求棧的元素個數
void output(sqstack s)//輸出棧的元素
pointer--;
}cout<=s.stackcapacity)//容量不足,擴充容量
s.top=s.base+s.stackcapacity;//更新棧頂指標
s.stackcapacity+=stackincrement;//更新棧的容量
}*s.top=elem;//填入元素
s.top++;//更新棧頂指標
s.stacklength++;//更新元素個數}
void pop(sqstack &s)//彈出元素
s.top--;
s.stacklength--;
cout<<"刪除元素後的棧為:";
output(s);}
void reversestack(sqstack&s)//反轉棧
return;
}cout<<"棧為空,無法反轉。\n";}
void sortstack(sqstack&s)//棧元素排序
if(after==s.base)
after--;
}before--;
}cout<<"公升序排序後的棧為:";
output(s);
return;
}cout<<"棧為空,無法排序。\n";}
void clearstack(sqstack&s)//清空棧
void interaction()//輸出操作
鏈式棧10種操作的實現
操作 時間複雜度 t n 空間複雜度 s n 判斷是否為空 o 1 o 1 得到長度 o n o 1 得到棧頂元素 o 1 o 1 壓入元素 o 1 o 1 彈出元素 o 1 o 1 反轉順序棧 o n o 1 氣泡排序 o n 2 o 1 資料結構分析與學習專欄 作 者 高祥 完成日期 2015 ...
順序棧的基本操作實現
這些都是頭函式裡的內容,也就是儲存之後,可以直接 對其進行呼叫。其中的乙個變數stacklen是用來記錄棧 的長度的,其實,這個變數可以不要,只是剛開始寫時 給它加上了,所以就按這樣寫了,感覺跟順序表的寫法 差不多 include include includeusing namespace std...
棧的基本操作及實現(順序棧)
順序儲存結構來實現的棧稱為順序棧,它利用一組位址連續的儲存單元存放自棧底到棧頂的資料元素,同時附設乙個指標top來指示當前棧頂的位置。注意,是c 特有的用來表示引用呼叫,所以此檔案應以.cpp字尾儲存 結構體為 define maxsize 50 typedef int elemtype typed...