各種基本演算法實現小結(二)—— 堆 棧
(均已測試通過)
棧——陣列實現
測試環境:win - tc
[cpp]view plain
copy
print?
#include
char stack[512];
int top=0;
void push(char c)
char pop()
int is_empty()
void main()
執行結果:
棧——陣列實現2
測試環境:win - tc
[cpp]view plain
copy
print?
#include
#include
/* typedef int datatype; */
#define datatype int
#define max 1024
typedef
struct
stack, *pstack;
pstack *init_stack()
ps->top=-1;
return ps;
} int empty_stack(pstack ps)
int push(pstack ps, datatype data)
ps->top++;
ps->data[ps->top]=data;
return 1;
} int pop(pstack ps, datatype *data)
*data=ps->data[ps->top];
ps->top--;
return 1;
} datatype top_stack(pstack ps)
return ps->data[ps->top];
} void display(pstack ps)
printf("printf the items of stack.../n");
for(i=ps->top;i>-1;i--)
printf("%4d", ps->data[i]);
printf("/n/n");
} void main()
display(ps);
printf("top is %d/n/n", top_stack(ps));
for(i=0;i
printf("/n/n");
display(ps);
getch();
}
執行結果:
棧——鍊錶實現
測試環境:win - tc
[cpp]view plain
copy
print?
#include
#include
typedef
char datatype;
struct _node
; typedef
struct _node node, *pstack;
pstack init_stack()
char pop()
int is_empty()
void main()
執行結果:
棧——陣列實現2
測試環境:win - tc
[cpp]view plain
copy
print?
#include
#include
/* typedef int datatype; */
#define datatype int
#define max 1024
typedef
struct
stack, *pstack;
pstack *init_stack()
ps->top=-1;
return ps;
} int empty_stack(pstack ps)
int push(pstack ps, datatype data)
ps->top++;
ps->data[ps->top]=data;
return 1;
} int pop(pstack ps, datatype *data)
*data=ps->data[ps->top];
ps->top--;
return 1;
} datatype top_stack(pstack ps)
return ps->data[ps->top];
} void display(pstack ps)
printf("printf the items of stack.../n");
for(i=ps->top;i>-1;i--)
printf("%4d", ps->data[i]);
printf("/n/n");
} void main()
display(ps);
printf("top is %d/n/n", top_stack(ps));
for(i=0;i
printf("/n/n");
display(ps);
getch();
}
執行結果:
棧——鍊錶實現
測試環境:win - tc
[cpp]view plain
copy
print?
#include
#include
typedef
char datatype;
struct _node
; typedef
struct _node node, *pstack;
pstack init_stack()
{ pstack ps;
ps=(pstack)malloc(sizeof(node));
if(null == ps)
{ printf("error. malloc is fail.../n"); 再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!
堆疊排序演算法
堆排序 維護的二叉樹是一顆完全二叉樹,大頂堆用來公升序排序,要求父節點大於等於左右子節點。而小丁堆用來降序排序,要求父節點小於等於左右子節點。堆排序 如果按公升序排序,就維護最大堆,降序就維護最小堆 這裡我們按公升序講 每次把最大元素放在堆頂,然後交換陣列的頭尾兩個元素,這樣陣列的最後乙個 元素就是...
演算法總結 堆疊
先說stack的題目 stack的實現 鍊錶,陣列 題目 1 簡單的 min stack,乙個陣列實現三個stack 2 經典的stack問題 經典漢諾塔問題,逆波蘭式計算或者產生逆波蘭式,簡化檔案路徑,驗證括號對是否合法,找出最長有效括號 貪心 stack求解 3 涉及tree的遍歷問題 tree...
堆疊演算法筆記
堆疊都是一種資料項按序排列的資料結構,只能在一端 稱為棧頂 top 對資料項進行插入和刪除。堆 資料結構 堆可以被看成是一棵樹,如 堆排序。進出順序隨意 棧 資料結構 一種先進後出的資料結構。可以看到sort heap時,必須先是乙個堆 兩個特性 1 最大元素在第乙個 2 新增或者刪除元素以對數時間...