題目:順序棧:將十進位制數n轉換成為x進製數,可以使用輾轉相除法。
(1)將n除以x,取其餘數;
(2)判斷商是否為0,如果為零,結束程式;否則,將商送n,轉(1)繼續執行
#define stacksize 100
#include
#include
#include
typedef
int datatype;
typedef
struct
seqstack;
//棧的初始化
void
initstack
(seqstack *s)
//判斷棧是否為空
intstackempty
(seqstack s)
else
}//取棧頂元素
intgettop
(seqstack s,datatype *e)
else
}//進棧操作
intpushstack
(seqstack *s,datatype e)
else
}//出棧操作
intpopstack
(seqstack *s,datatype *e)
else
}//返回棧的長度
intstatcklength
(seqstack s)
//清空棧
void
clearstack
(seqstack *s)
void
coversion
(int n)
printf
("請輸入十進位制轉換成八進位制數字:");
while(!
stackempty
(s))
printf
("\n");
}void
coversion1
(int n)
printf
("請輸入十進位制轉換成二進位制數字:");
鏈棧:
#include
#include
#include
typedef
int datatype;
#define listsize 100
//鏈棧儲存型別
typedef
struct nodelstacknode,
*linkstack;
//初始化鏈棧
void
initstack
(linkstack *top)
(*top)
->next=
null;}
//判斷棧是否為空
intstackempty
(linkstack top)
else
}//進棧操作
intpushstack
(linkstack top,datatype e)
p->data=e;
p->next=top-
>next;
top-
>next=p;
return1;
}//出棧操作
intpopstack
(linkstack top,datatype *e)
top-
>next=p-
>next;
*e=p-
>data;
free
(p);
return1;
}//取棧頂元素
intgettop
(linkstack top,datatype *e)
*e=p-
>data;
return1;
}//求表長操作
intstacklength
(linkstack top)
return count;
}//銷毀棧
void
destroystack
(linkstack top)
}void
coversion
(int n)
printf
("請輸入十進位制轉換成八進位制數字:");
while(!
stackempty
(top)
)printf
("\n");
}void
coversion1
(int n)
printf
("請輸入十進位制轉換成二進位制數字:");
棧的兩種實現方式
一 陣列實現棧 首先需要定義乙個陣列來儲存棧中的資料,並定義乙個變數來記錄陣列中儲存元素的個數,編寫乙個構造方法來構造乙個長度為十得陣列。先頂i有乙個陣列來儲存棧中的元素 private object array 定義陣列中儲存元素的個數 private int size 構造後乙個長度與為10的陣...
數字dp的兩種實現方式
一.遞推 學的第一種方法就是這個,但是個人認為這種方式在某些題上比較難實現,比如 blance number hdu 3709 這道題本蒟蒻沒想出怎麼用遞推預處理,反而是記憶化搜尋的方式更容易懂.以hdu 2089為例,本題的遞推還是比較好實現的.二.記憶化搜尋 這種方法就比較爛大街了,基本每道數字...
Oracle測試儲存過程兩種方式
在初學oracle時,寫了乙個儲存過程,名稱是 proc get bill,三個引數,第1,3是in引數,第2是out引數,寫完之後,想測一下,結果發現網上有多種方式 其重要是下面這兩種,只是寫法不同而已 剛開始把兩種變數定義方式搞錯了,一直執行不過,經慢慢嘗試,得到了下面兩種寫法,希望像我這樣初學...