C++ 实现数据结构中队和栈的操作

来源:互联网 发布:女式腰带淘宝网 编辑:程序博客网 时间:2024/05/24 06:31

一、队

         队的存储结构是先进先出(FIFO),所以,才存储队的时候,除了一存储数据的结构外还需要定义指向队首和

    队尾的指针。它的链表具体实现如下示:

typedef int datatype;typedef struct node{        datatype data;node*next;};//定义的结构体内容

//----------------------------------Queue----------------------------class Queue{private:  node *rear,*front;public:  void init_Queue(datatype);  void input_Queue(datatype);  datatype pop_Queue();  void release_Queue();};         //类中表明了数据的存储指针以及用到的一些方法void Queue::init_Queue(datatype data){        front=(node*)malloc(sizeof(node));rear=front;front->data=data;front->next=NULL;};void Queue::input_Queue(datatype data){    node*p;        p=(node*)malloc(sizeof(node));rear->next=p;rear=p;rear->data=data;rear->next=NULL;};datatype Queue::pop_Queue(){        node *p;p=front;datatype data=p->data;front=front->next;free(p);return data;};void Queue::release_Queue(){node* p;while(front!=rear){ p=front;     front=front->next; free(p);}free(front);front=NULL;rear=NULL;};

二、栈

    栈的存储结构与队的结构正好相反,它的数据是先进后出结构,所以只需要一个指向队头的指针即可,其具体的实现

如下所示:

//----------------------------------栈(Stack)-----------------------------------class Stack{private:   node* top;public:   void init_Stack(datatype);       void input_Stack(datatype);   datatype top_Stack();   void release_Stack();};void Stack::init_Stack(datatype data){         top=(node*)malloc(sizeof(node)); top->data=data; top->next=NULL;};void Stack::input_Stack(datatype data){        node *p;p=top;top=(node*)malloc(sizeof(node));top->next=p;top->data=data;p=NULL;};datatype Stack::top_Stack(){       node *p;   p=top;   datatype data=top->data;   top=top->next;   free(p);   return data;};void Stack::release_Stack(){  node *p=NULL;  int count=0;  while(top!=NULL){  p=top->next;    free(top);          top=p;  p=NULL;  count++;  }#ifdef _DEBUG  printf("count=%d\n",count);#endif};


  

0 0
原创粉丝点击