順序棧的定義和基本操作
順序棧:操作更簡單的順序表,出棧入棧等操作只在表尾進行
#include
#include
#include
#include
#define maxsize 100
typedef datatype int
;//定義順序棧
struct stack
;//置空棧
struct stack *
setnulls
(struct stack *s)
//進棧
struct stack *
pushs
(struct stack *s,datatype e)
else
}//出棧
struct stack *
pops
(struct stack *s)
//取棧頂元素
struct stack *
gettops
(struct stack *s)
鏈棧的定義和基本操作
#include
#include
#include
#include
#define maxsize 100
typedef datatype int
;struct node
;struct node *top;
//進棧
struct node *
pushl
(struct node *s,datatype e)
//出棧
struct node*
popl
(struct node *s)
else
}
地圖染色演算法
主要思想:
1、每個區域用四種顏色一次試探,若可染,用棧記錄顏色序號。若出現四種顏色都不可染了,退棧回溯,修改當前棧頂的顏色再次試探。
2、用r[n][n]來表示相鄰關係。相鄰為1不相鄰為0;
3、s[i]=k 表示i+1區域染的顏色是k
#include
#include
#define n 7
void
mapcolor
(int r[
],int n,
int s)
if(k;//重色則試探下一種顏色
else}}
if(color>4)
}
用棧的思想,實現十進位制轉化成八進位制
void
conversion()
while(!
emptys
(s))
}
棧進行括號配對
思想:字元陣列,若遇到(或[ 就入棧,若遇到] 或)就出棧,如果最後棧為空,則括號配對。
**借鑑了別的blog,自己加了一點注釋但是忘了是誰的了sooorry! 純粹是用來自己以後複習用,如果有看到的並且介意的話可以聯絡我刪除!qwq
#include
#include
#define maxsize 10000
typedef
struct
stack;
//置空棧
void initstack (stack *s)
//判斷棧是否為空
int isempty (stack *s)
//入棧
int push (stack *s,
char x)
//取棧頂元素
int gettop (stack *s,
char
*x)}
//出棧
int pop (stack *s,
char
*e)}
//配對函式
int match (
char a,
char b)
int bracketmatch (
char
*str)':
if(isempty (
&s))
else}}
}if(isempty (
&s))
flag=1;
else
flag=0;
return flag;
}int
main()
for(i=
0;i)return0;
}
棧判斷回文數
思想:回文,則判斷順序和逆序是否相等。可以先一一入棧,再一一出棧(出棧之後則為逆序),比較兩個字串是否相等
#include
#include
#include
#define maxsize 100
//使用順序棧
typedef
struct node
stack;
stack *s;
//初始化棧
stack *
setnull
(stack *s)
//出棧函式
char
pop(stack *s)
//進棧函式
stack *
push
(stack *s,
char e)
else
return s;
}//對輸入的字串,判斷是否為回文,需要呼叫pop和push函式
intcorrect
(char string,
int len)
for(i=
0;i(strcmp
(string,temp)==0
) flag=1;
else flag=0;
return flag;
}int
main()
else
return0;
}
線性表 棧 佇列
輔助定義 define maxsize 5 define ok 0 define error 1 typedef int selemtype typedef int status 棧 順序 鏈式 相關結構體定義 順序棧 typedef struct sqstack 順序棧共享空間 typedef s...
特殊線性表 棧
定義 限定僅在表尾進行插入和刪除操作的線性表。操作特性 後進先出。注意 棧只是對錶插入和刪除操作的位置進行了限制,並沒有限定插入和刪除操作進行的時間。const int max size 100 template class t class seqstack template class t voi...
線性表 棧,佇列
1.3 棧 棧是一種先進後出的資料結構。只能在一端進行插入和刪除操作的特殊線性表。將資料進入棧稱為壓棧,資料出去稱為彈棧。壓棧 public void push t t 彈棧 public t pop 讓首結點指向第乙個結點的下乙個結點 head.next oldfirst.next 元素個數 1 ...