順序棧(基於陣列的順序棧)
#include
#include
#include
typedef
enum status
status;
typedef
int elemtype;
typedef
struct sqstack
sqstack;
//函式宣告
//基於陣列的順序棧
status initstack
(sqstack *s,
int sizes)
;//初始化棧
status isemptystack
(sqstack *s)
;//判斷棧是否為空
status gettopstack
(sqstack *s, elemtype *e)
;//得到棧頂元素
status clearstack
(sqstack *s)
;//清空棧
status destroystack
(sqstack *s)
;//銷毀棧
status stacklength
(sqstack *s,
int*length)
;//檢測棧長度
status pushstack
(sqstack *s, elemtype data)
;//入棧
status popstack
(sqstack *s, elemtype *data)
;//出棧
void
show
(void);
//顯示視窗
intjudge_int
(void);
//使使用者輸入整數
status initstack
(sqstack *s,
int sizes)
status isemptystack
(sqstack *s)
else
}status gettopstack
(sqstack *s, elemtype *e)
else
else}}
status clearstack
(sqstack *s)
else
else}}
status destroystack
(sqstack *s)
else
}status stacklength
(sqstack *s,
int*length)
else
}status pushstack
(sqstack *s, elemtype data)
status popstack
(sqstack *s, elemtype *data)
else
}void
show
(void
)int
judge_int
(void
)//防止使用者亂輸入其他的字元
else}}
j = len-1;
for(m=
0;m)// 將字元重新轉換為數字
return num;
}int
main
(void
)else
break;}
case2:
//判斷棧是否為空
else
else
}break;}
case3:
//得到棧頂元素
break;}
case4:
//清空棧
else
break;}
case5:
//銷毀棧
else
break;}
case6:
//檢測棧的長度
break;}
case7:
//入棧
else
if(s.top == s.size -1)
else
else
}break;}
case8:
//出棧
else
else
}break;}
case9:
//退出程式
default:}
}while
(choice !=9)
;system
("pause");
return0;
}
鏈棧
#include
#include
#include
#define stack_h_included
typedef
enum status
status;
typedef
int elemtype;
typedef
struct stacknode
stacknode,
*linkstackptr;
typedef
struct linkstack
linkstack;
//函式的宣告
//鏈棧
status initlstack
(linkstack *s)
;//初始化棧
status isemptylstack
(linkstack *s)
;//判斷棧是否為空
status gettoplstack
(linkstack *s,elemtype *e)
;//得到棧頂元素
status clearlstack
(linkstack *s)
;//清空棧
status destroylstack
(linkstack *s)
;//銷毀棧
status lstacklength
(linkstack *s,
int*length)
;//檢測棧長度
status pushlstack
(linkstack *s,elemtype data)
;//入棧
status poplstack
(linkstack *s,elemtype *data)
;//出棧
void
show
(void);
//顯示介面
intjudge_int
(void);
//使使用者輸入整數
status initlstack
(linkstack *s)
status isemptylstack
(linkstack *s)
else
}status gettoplstack
(linkstack *s,elemtype *e)
else
}status clearlstack
(linkstack *s)
else
}status destroylstack
(linkstack *s)
return success;
}status lstacklength
(linkstack *s,
int*length)
else
}status pushlstack
(linkstack *s,elemtype data)
new->data = data;
new->next = s->top;
s->top = new;
s->count++
;return success;
}status poplstack
(linkstack *s,elemtype *data)
else
}void
show
(void
)int
judge_int
(void
)//防止使用者亂輸入其他的字元
else}}
j = len-1;
for(m=
0;m)// 將字元重新轉換為數字
return num;
}int
main
(void)do
else
break;}
case2:
//得到棧頂元素
break;}
case3:
//清空棧
else
break;}
case4:
//銷毀棧
else
break;}
case5:
//檢測棧的長度
break;}
case6:
//入棧
break;}
case7:
//出棧
else
break;}
case8:
//退出程式
default:}
}while
(choice !=8)
;system
("pause");
return0;
}
學習鏈棧後,可以利用鏈棧實現逆波蘭計算器(本博主的另一篇文章) 資料結構 棧的實現(順序棧和鏈棧)
棧介面,描述棧的抽象資料型別,泛型引數t表示資料元素的資料型別 public inte ce sstack 棧有兩種基本的實現 順序棧,實現棧介面 public class seqstack implements sstack 預設構造,構造容量為64的空棧 public seqstack 判斷棧是...
棧結構 順序棧 鏈棧
定義 棧是一種與線性表相似的線性結構。不同之處是當需要對節點做增刪操作時,只能操作棧頂的節點,因此具有先進後出 或者後進先出 的特點。按儲存結構的不同,可分為順序棧和鏈棧。棧結構的幾個屬性 adt stack elemtype為型別識別符號 資料關係 r 資料操作 1 stackseq initst...
C 實現資料結構 順序棧和鏈棧
2020年8月8日 週六 天氣晴 不悲嘆過去,不荒廢現在,不懼怕未來 用c 實現了簡單的順序棧和鏈棧類,成員函式實現了棧的基礎功能 isempty push pop top 並且用實現的棧解決了兩個問題 進製轉換和判斷表示式是否有效,是用vs2019實現的,每個函式的功能都新增了一定注釋,由於用了模...