資料結構 棧和佇列 c

2021-08-29 20:56:21 字數 3810 閱讀 5611

//標頭檔案"標頭.h"

#include

#include

using namespace std;

#define stack_init_size 100

#define stackincrement 10

#define overflow -2

#define error 0

#define ok 1

#define true 1

#define false 0

typedef

int status;

typedef

int selemtype;

typedef

struct

sqstack;

status initstack

(sqstack &s)

//initstack

status getstack

(sqstack s,selemtype &e)

//getstack

status push

(sqstack &s, selemtype &e)

*s.top++

= e;

return ok;

}//push

status pop

(sqstack &s,selemtype &e)

//pop

status clearstack

(sqstack &s)

//clearstack

status destroystack

(sqstack &s)

//destroystack

status stackempty

(sqstack s)

//stackempty

intstacklength

(sqstack s)

//stacklength

void

conversion()

cout <<

"輸入需轉換的十進位制數:"

; cin >> n;

d =8;

while

(n) n = n / d;

} cout <<

"八進位制為:"

;while(!

stackempty

(s))

cout << m;}}

//conversion

void

grammartest()

cout <<

"輸入需檢查的括號總數:"

; cin >> n;

cout <<

"輸入第"

<< s <<

"個括號:"

; cin >> c;

ac = c;if(

push

(q, ac)

!= ok)

while

(n >1)

elseif(

(ac - e ==1)

||(ac - e ==2)

)}elseif(

push

(q, ac)

!= ok)

} n--;}

if(stackempty

(q)== true)

cout <<

"括號匹配!"

<< endl;

else

cout <<

"括號不匹配!"

<< endl;

}//grammartest

//原始檔"源.cpp"

#include

"標頭.h"

intmain()

return0;

}

//標頭檔案"標頭.h"

#include

#include

using namespace std;

#define ok 1

#define overflow -1

#define error 0

#define true 1

#define false -2

typedef

int qelemtype;

typedef

int status;

typedef

struct qnode

qnode,

* queueptr;

typedef

struct

linkqueue;

status initqueue

(linkqueue &q)

//initqueue

status destroyqueue

(linkqueue &q)

return ok;

}//destroyqueue

status enqueue

(linkqueue &q, qelemtype e)

//enqueue

status dequeue

(linkqueue &q, qelemtype &e)

//dequeue

status clearqueue

(linkqueue &q)

//clearqueue

status queueempty

(linkqueue q)

intqueuelength

(linkqueue q)

return l;

}//queuelength

status gethead

(linkqueue q, qelemtype &e)

//gethead

//原始檔"源.cpp"

#include

"標頭.h"

//程式設計實現佇列(鏈佇列或迴圈佇列)的基本操作,並應用棧和佇列實現回文序列的判定。

intmain()

cout <<

"輸入儲存元素個數:"

; cin >> e;

for(

int i =

1; i <= e; i++

)else

} cout <<

"清空 1;檢測是否為空 2;佇列長度 3;"

<< endl <<

"輸出隊頭元素 4;插入隊尾 5;刪除隊頭 6;"

<"銷毀退出 7!!!"

<< endl;

for(;;

)else

cout <<

"銷毀失敗!"

<< endl;

break

;default

: cout <<

"輸入無效,請重輸..."

<< endl;

break;}

} part:

return0;

}

//原始檔"源.cpp"

//標頭檔案是上面的棧和佇列的標頭檔案合起來

#include

"標頭.h"

intmain()

else

cout <<

"輸入要進行判斷是否是回文數的數:"

<< endl;

cin >> a;

a1 = a;

while

(a>0)

for(

; i >

0; i--)}

cout << a1<<

"是回文數!!!"

<< endl;

return0;

}

資料結構 棧和佇列

棧 基礎 知識棧 練習題 佇列 基礎知識 棧示意圖 後進先出 順序棧結構定義 define maxsize 1024 struct stack 操作函式 push 入棧 pop 出棧 struct lstack 鏈棧示意圖 操作函式 push 入棧 pop 出棧 注意 也可以直接呼叫系統已經寫好的庫...

資料結構 棧和佇列

本章的基本內容是 兩種特殊的線性表 棧和佇列 從資料結構角度看,棧和佇列是操作受限的線性表,他們的邏輯結構相同。從抽象資料型別角度看,棧和佇列是兩種重要的抽象資料型別。p棧 限定僅在表的一端進行插入和刪除操作的線性表。p允許插入和刪除的一端稱為棧頂,另一端稱為棧底。p空棧 不含任何資料元素的棧。a ...

資料結構 棧和佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。class solution int pop node stack2.top stack2.pop return node private stack stack1 stack stack2 大家都知道斐波那契數列,現...