回 帖 发 新 帖 刷新版面

主题:新手写的简单的栈和队列的类定义(C++)望大虾指点

栈####################################################
#include <iostream.h>
struct Node{
    int data;
    struct Node *next;
};
class Stack
{
    Node *top;
    //Node *tail; 队列
public:
    Stack()
    {
        p=new Node;
        p->next=NULL;
        top=p;

    }
    void Push(int el);
    int  Pop();
    int Getpop();
    ~Stack();
};            
void Stack::Push(int el)
    {
    
            Node *n;
            n=new Node;
            n->data=el;
            n->next=top;
            top=n;
        
    }
int Stack::Pop()
    {
        int el;
        if(top==NULL)
            return 0;
        else
        {
            Node *temp;
           el=top->data;
           temp=top;
           delete temp;
           temp=NULL;
           top=top->next;
           return el;
        }
    }
int Stack::Getpop()
    {
        if(top==NULL)
            return 0;
        else
        return (top->data);
    }
Stack::~Stack()

        Node *p;
        while(top!=NULL)
    {
       p=top;
       top=top->next;
       delete p;
       p=NULL;
     }
}
队列#####################################
#include <iostream.h>
struct Node
{
    int data;
    Node *next,*pre;
};
class Queue
{
   Node *head,*rear;
public:
    Queue()
    {
       Node *p;
       p=new Node;
       p->next=NULL;
       rear=head=p;
    }
    bool AddNode(int el);
    int DeNode();
    ~Queue()
    {
        Node *d;
     while(head->next!=NULL)
     {
         d=head;
         head=head->next;
         delete d;
         d=NULL;
     }
    }
};
bool Queue::AddNode(int el)
{
    Node *newnode;
    newnode=new Node;
    newnode->data=el;
    if(head!=NULL)
    {
    newnode->next=head;
    head=newnode;
    return true;
    }
    else return false;
}
int Queue::DeNode()
{
    int elemtp;

        Node *p,*temp;
        p=head;
        while(p->next!=rear) p=p->next;
        temp=rear;
        elemtp=temp->data;
        rear=p;
        delete temp;
        temp=NULL;
        return elemtp;


}

回复列表 (共7个回复)

沙发

struct Node{
    char data;
    Node *lchild;
    Node *rchild;
};
class Tree
{
    Node *root;
public:
    Tree(){
        Node *p;
        p=new Node;
        p->lchild=NULL;
        p->rchild=NULL;
        root=p;
    }
树的构造函数  

void Countleaf(Node *T,int count)
 {
     if(T->lchild==NULL&&T->rchild==NULL)
         count++;
     else
     {
         Countleaf(T->lchild,count);
         Countleaf(T->rchild,count);
     }
 }
计算叶子节点的个数

板凳

先序创建树
    void Creattree(Node *p)
    {
         int ch;
         ch=getchar;
         if(ch==' ')
             p=NULL;
         else
         {
             Node *t;
             t=new Node;
             t->data=ch;
             Creattree(t->lchild);
             Creattree(t->rchild);
         }
    }
树的深度
int Deptree(Node *T)
{
    if(T==NULL)
        return 0;
    else
    {
        int left,right,dep;
        left=Deptree(T->lchild);
        right=Deptree(T->rchild);
        dep=1+(left>right?left:right);
    }
    return dep;
}
大虾来看看啊? 新手不会~

3 楼

自己下个Dev-cpp,安装之后找到相应目录(我的是D:\Dev-Cpp\include\c++\3.4.2\bits),看一下人家的标准库是怎么实现的.
数据结构入门书籍推荐
数据结构与算法分析C++描述(第三版)
作者:(美)维斯 著,张怀勇 等译 出版社:人民邮电出版社 出版日期:2007-1-1 ISBN:9787115139238 字数:787000 印次:1 版次:1 纸张:胶版纸

4 楼

我看了那个DD  里面太乱了    貌似不太现实~

5 楼

那你去www.qtopia.org.cn那里下一个qtopis的源码包,下载地址是:
http://www.qtopia.org.cn/ftp/mirror/ftp.trolltech.com/qtopia/source/qtopia-free-src-2.2.0.tar.gz
有几个核心的基本类在
qtopia-free-src-2.2.0.tar.gz\qtopia-free-2.2.0\qt2\src\tools
目录下
你可以用Source Insight进行代码跟踪.
我用的是SlickEdit.下载地址http://pool.upsdn.net/editor/

6 楼

自己来挑错误 

           temp=top;
           delete temp;
           temp=NULL;
           top=top->next;

应该改为
            temp=top;
           top=top->next;
           delete temp;
           temp=NULL;
           

7 楼

自己再来找茬       链表的表头 不附值

我来回复

您尚未登录,请登录后再回复。点此登录或注册