線性表2 棧

2021-10-23 00:17:44 字數 3142 閱讀 7603

順序棧的定義和基本操作

順序棧:操作更簡單的順序表,出棧入棧等操作只在表尾進行

#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 ...