栈和队列应用之数制转换
生活随笔
收集整理的這篇文章主要介紹了
栈和队列应用之数制转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 數制轉換是將任意一個非負的十進制數轉換為其他進制的數,一般的方法是采用輾轉相除法。參考《C#數據結構》
????????????? N????????? N/8??????? N%8
??????????? 5142??????? 642??????? 6
???????????? 642???????? 80???????? 2
???????????? 80?????????? 10???????? 0
?????????????10?????????? 1?????????? 2
????????????? 1??????????? 0?????????? 1
??????從上面可得出:5142轉換為八進制為12026
???? 實現上述的代碼如下:書中是封裝為一個方法,因為我先前的類是泛型類,在里面不能直接轉換為整型類型,希望網友提出改進意見。
?????
?1??????????????//棧的使用:數制轉換?2????????????????SeqStack<int>?list=new?SeqStack<int>(10);
?3????????????????int?item=0;
?4????????????????Console.Write("請輸入一個整型值:");
?5????????????????item=Convert.ToInt32(Console.ReadLine());
?6????????????????while?(item?>?0)
?7????????????????{
?8????????????????????list.Push(item%8);
?9????????????????????item?=?item?/?8;
10????????????????}
11????????????????while?(!list.IsEmpty())
12????????????????{
13????????????????????item?=?list.Pop();
14????????????????????Console.WriteLine("{0}",item);
15????????????????}
?
完整代碼如下:
?
??1using?System;??2using?System.Collections.Generic;
??3using?System.Text;
??4
??5namespace?棧和隊列
??6{
??7????class?Program
??8????{
??9????????public?interface?IStack<T>
?10????????{?
?11???????????//求棧的長度
?12?????????????int?GetLength();
?13????????????//判斷是否為空
?14????????????bool?IsEmpty();?
?15????????????//判斷是否已滿
?16????????????bool?IsFull();
?17????????????//清空操作
?18????????????void?Clear();
?19????????????//入棧
?20????????????void?Push(T?item);
?21????????????//出棧
?22????????????T?Pop();
?23????????????//取棧頂元素
?24????????????T?GetTop();
?25???????????
?26????????????
?27
?28????????}
?29????????public?class?SeqStack<T>?:?IStack<T>
?30????????{?
?31???????????//棧的容量
?32????????????private?int?maxsize;
?33???????????//存儲棧中的數據
?34????????????private?T[]?data;
?35???????????//指定棧的棧頂
?36????????????private?int?top;
?37
?38????????????//索引器
?39????????????public?T?this[int?index]
?40????????????{
?41????????????????get
?42????????????????{?
?43???????????????????return?data[index];
?44????????????????}
?45????????????????set
?46????????????????{
?47????????????????????data[index]?=?value;
?48????????????????}
?49????????????}
?50
?51????????????//容量屬性
?52????????????public?int?Maxsize
?53????????????{
?54????????????????get
?55????????????????{
?56????????????????????return?maxsize;
?57????????????????}
?58????????????????set
?59????????????????{
?60????????????????????maxsize?=?value;
?61????????????????}
?62????????????}
?63
?64????????????//棧頂屬性
?65????????????public?int?Top
?66????????????{
?67????????????????get
?68????????????????{
?69????????????????????return?top;
?70????????????????}
?71????????????}
?72
?73????????????//構造器
?74????????????public?SeqStack(int?size)
?75????????????{
?76????????????????data?=?new?T[size];
?77????????????????maxsize?=?size;
?78????????????????top?=?-1;
?79????????????}
?80
?81????????????//求棧的長度
?82????????????public?int?GetLength()
?83????????????{
?84????????????????return?top?+?1;
?85????????????}
?86
?87????????????//清空棧
?88????????????public?void?Clear()
?89????????????{
?90????????????????top?=?-1;
?91????????????}
?92
?93????????????//判斷是否為空
?94????????????public?bool?IsEmpty()
?95????????????{
?96????????????????if?(top?==?-1)
?97????????????????{
?98????????????????????return?true;
?99????????????????}
100????????????????else
101????????????????{
102????????????????????return?false;
103????????????????}
104????????????}
105
106????????????//判斷是否以滿
107????????????public?bool?IsFull()
108????????????{
109????????????????if?(top?==?maxsize?-?1)
110????????????????{
111????????????????????return?true;
112????????????????}
113????????????????else
114????????????????{
115????????????????????return?false;
116????????????????}
117????????????}
118
119????????????//入棧
120????????????public?void?Push(T?item)
121????????????{
122????????????????if?(IsFull())
123????????????????{
124????????????????????Console.WriteLine("棧滿啦,要清空啦!");
125????????????????????return;
126????????????????}
127????????????????data[++top]?=?item;
128????????????}
129????????????//出棧
130????????????public?T?Pop()
131????????????{?
132???????????????T?tmp=default(T);
133???????????????if?(IsEmpty())
134???????????????{
135???????????????????Console.WriteLine("棧已空!");
136???????????????????return?tmp;
137???????????????}
138???????????????tmp?=?data[top];
139???????????????--top;
140???????????????return?tmp;
141????????????}
142????????????//獲取棧頂數據元素
143????????????public?T?GetTop()
144????????????{
145????????????????if?(IsEmpty())
146????????????????{
147????????????????????Console.WriteLine("表已空!");
148????????????????????return?default(T);
149????????????????}
150????????????????return?data[top];
151????????????}
152????????????
153????????????
154
155????????}
156
157????????static?void?Main(string[]?args)
158????????{
159???????????
160????????????SeqStack<int>?list=new?SeqStack<int>(10);
161????????????//棧的使用:數制轉換
162????????????????int?item=0;
163????????????????Console.Write("請輸入一個整型值:");
164????????????????item=Convert.ToInt32(Console.ReadLine());
165????????????????while?(item?>?0)
166????????????????{
167????????????????????list.Push(item%8);
168????????????????????item?=?item?/?8;
169????????????????}
170????????????????while?(!list.IsEmpty())
171????????????????{
172????????????????????item?=?list.Pop();
173????????????????????Console.WriteLine("{0}",item);
174????????????????}
175????????????}
176
177????????}
178????}
179
180
轉載于:https://www.cnblogs.com/zhangq0309/archive/2009/03/09/1407260.html
總結
以上是生活随笔為你收集整理的栈和队列应用之数制转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: petshop详解之五:PetShop之
- 下一篇: 用了ReSharpe硬是爽