我爱电脑技术论坛's Archiver

bbs23 发表于 2008-4-5 10:02

数据库在C++程序中使用方法

 在本教程中,我假设大家都知道如何使用C++的类进行工作,因为我所有的数据结构,要立足于他们。我遇到过关于数据结构的教程,但是很难找到一个使用OOP来编写的。因此,这其中将主要集中于用一个类来编写数据结构。,w}P|5W'd
Z-`1pm5gDd
  栈'm r[[j4x%f
jG"U"},BzKZ h-{"E
  在编写代码时,堆栈是最常用的数据结构。它的概念简单,编写也比较简单。有这么一个情况,桌子上有堆成一堆的5本书,你想增加一本。应该怎么做?只要把书放在顶端就可以了。如果你想从这堆书中取出第3本呢?你只要一本接着一本把书移到顶端,直到第3本书处在顶端。然后取走第3本书,并使其他处在顶端。O U6?`y SM

\Nh+iq   你已经注意到我使用顶端这个词语。没错,顶端(栈顶)对于堆栈至关重要的。堆栈只允许从顶端加入数据,出栈/退栈也是从栈顶。就是这么简单。那什么情况使用堆栈?堆栈被用在每一个进程中。每一个进程都一个堆栈,数据和地址从堆栈中被取出来/添加进来。栈顶规则在这里也符合。ESP Register 添加一个指针,指向栈顶。无论如何,解释进程中的堆栈怎么工作,已超出本教程范围,让我们开始写数据结构。在开始之前,请大家记住一些堆栈术语。向堆栈插入新元素成为入栈,从堆栈中删除元素成为出栈。a8Er O)O]X2T
6q(em^6i2r
以下是引用片段:
y#?4q8h1j$FYc/N   #include  %b#\Y9BK7U
  using namespace std; A2o`+m#{m6p*|_
  #define MAX 10 // MAXIMUM STACK CONTENT 2`2zwF8m
  class stack
$r%Q9G#A$BA*{;ksW   {
7z1W'f1`(k-U1Z1F O   private:
$U#E Bm*DE|   int arr[MAX]; // Contains all the Data R\|$mNyA
  int top; //Contains location of Topmost Data pushed onto Stack
4eX8F'C_?X7K   public: 0](oj!}el{9{FCF
  stack() //Constructor
u&[ @:k.M*e   { WNf h{"O
  top=-1; //Sets the Top Location to -1 indicating an empty stack
IH"BbP{7I$^y3r"a   }
*v*S9p+N D B-yu   void push(int a) // Push ie. Add Value Function ?2FHo![OC;M#@
  { BKSI:~n0z$bsR
  top++; // increment to by 1
4g~_Qhn   if(top  
P2\g%R9h v\   {
fBtUZ   arr[top]=a; //If Stack is Vacant store Value in Array ~0q?%eJ
  }
x@2L/q'zlT   else ^9{4e c&Ef!UU
  { ~zEhP K
  cout<<"STACK FULL!!"<  
:S6H7M FR6i   top--;
$~T\$mU~   } } ?[e1A#?
  } q9\tM0zw
  int pop() // Delete Item. Returns the deleted item
Z5p5X)rsH3cRj]eS   {
(IB)y3f-SHk7p7Mo   if(top==-1)
Ad.@ x1H#AN   { d(gd2XO6TRC
  cout<<"STACK IS EMPTY!!!"<  PspE7`,@ |&v)O'pj#x
  return NULL; 7HA'y1q'rP7c@$h
  } 2FAsd9`n
  else _.i|B Y`
  {
$L{"HTX(I4|   int data=arr[top]; //Set Topmost Value in data "H8W2lb!D?L
  arr[top]=NULL; //Set Original Location to NULL
5xNVE2o~   top--; // Decrement top by 1
GHg*~T   return data; // Return deleted item
g~D8iK |   } )Y \1Cv#CUHp0ZV
  }
SP1wS,T"T   }; j} rK9n|5[
  int main() 1|2_8@$n:owi_s
  { 8D'}7ED|*v
  stack a;
hDJc _cW ck   a.push(3); 7l1h7D:|4q:bz@A
  cout<<"3 is Pushed\n";
6u,Hz7AlF2A   a.push(10);
%fdQ+nx   cout<<"10 is Pushed\n";
3xm a[8Y)T   a.push(1);
EGs;^#m1I3K   cout<<"1 is Pushed\n\n";
;AP0jP `9y   cout<  H;n6_+q ZJ9t7v `dy
  cout<  
e`dFPL{Pd   cout<  f6i3J~yS \4S9xL
  return 0; 1h&z!`8vF
  }
Ccv.i&[8h mq
*LC"N DoX/^}!p&X\ (FDg:L.J;OFY,?&T
  输出为:
0z9ft)_+N P;Z(f(o{"Npp
  3 is Pushed*z2~R*]o-_ J cpL
*HI5@+BU0pPr
  10 is PushedE;AEk!P!\
P@&P0gsEE
  1 is Pushed0J/]Y&s2n5_$X7`c
e E6rs6o'`
  1 is Popped
F$U])f e*rM@,? _ UC.\9y!c.e/q2O
  10 is Popped
&FvF`e6Cp
@V7}(i u T!Q:T&NmN   3 is PoppedC-y8\8zp3s~E
1cQ4O%yL#w
  我们可以很清楚的看到最后入栈的数据第一个出栈。这就是为什么堆栈被成为LIFO(后进先出,Last In First Out)。我猜你也明白为什么了。*W8[D.{&U wjjo
.L,BN+o/J"Yj+t q
  让我们看看如何编译、执行此程序的。我们首先创建一个叫top的变量,使它处在栈顶位置。赋值-1,表示堆栈是空的。当有数据输入,top自动加1,并把数据存入arr数组中。对于这个数据结构有一个缺点。我们最多只能放10个元素。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.