| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 539 人关注过本帖
标题:谁帮我看一下这个程序为啥运行出错?(语法貌似正确)
只看楼主 加入收藏
莫一阳
Rank: 1
等 级:新手上路
帖 子:38
专家分:6
注 册:2011-4-27
结帖率:78.57%
收藏
已结贴  问题点数:14 回复次数:2 
谁帮我看一下这个程序为啥运行出错?(语法貌似正确)
#include<iostream>
#include<cstring>
using namespace std;

typedef unsigned char BYTE;        //定义字节类型
typedef void *ANYPOINTER;        //定义万能指针类型
typedef void (*PACCESSFUNC)(ANYPOINTER);    //定义访问函数类型

class LinkedList
{
private:
    struct _Node
    {
        ANYPOINTER pData;    //存储的数据
        _Node*     pNext;        //指向后继结点的指针

        _Node(int  nDataSize,ANYPOINTER pData);
        ~_Node();
    };
   
    int    nDataSize;    //数据单元的大小
    _Node *   pHead;    //头指针

public:
    void Traverse(PACCESSFUNC pFunc);    //遍历
    void Empty();    //置空/揭断
    bool IsEmpty();        //空判断
    bool Delete();        //删除头结点
    bool GetFirst(ANYPOINTER pData);    //获得第一个结点数据
    void Insert(ANYPOINTER pData);    //在头部插入节点

    LinkedList(int nDataSize);
    ~LinkedList();
};

LinkedList::_Node::_Node(int nDataSize,ANYPOINTER pData)    //结点的初始化
{
    this->pData=new BYTE[nDataSize];    //为节点分配存储空间
    memcpy(this->pData,pData,nDataSize);    //将数据复制到节点中
}

LinkedList::_Node::~_Node()
{
    delete pData;    //删除数据,释放空间
}

LinkedList::LinkedList(int nDataSize)    //链表初始化
{
    this->nDataSize=nDataSize;
    pHead=NULL;
}

LinkedList::~LinkedList()
{
    if(!IsEmpty())
        Empty();
}

void LinkedList::Insert(ANYPOINTER pData)
{
    cout<<"In Insert()..."<<endl;
    _Node *p=new _Node(nDataSize,pData);        //产生一个新节点
    p->pNext=pHead;    //使本节点的后继节点是原来头指针指向的节点
    pHead=p;    //使头指针指向本节点
}

bool LinkedList::GetFirst(ANYPOINTER pData)
{
    if(IsEmpty())
        return false;
    memcpy(pData,pHead->pData,nDataSize);    //将数据复制到制定地址
    return true;
}

bool LinkedList::Delete()
{
    cout<<"In Delete()..."<<endl;
    if(IsEmpty())
        return false;
    _Node *p=pHead;        //p指向第一个节点
    pHead=p->pNext;        //头指针指向p节点的后继
    delete p;    //删除p节点
    return true;
}

bool LinkedList::IsEmpty()
{
    return pHead=NULL;
}

void LinkedList::Empty()
{
    cout<<"In Empty()..."<<endl;
    while(Delete());    //每次删除头结点,直到全部结点被删除
}

void LinkedList::Traverse(PACCESSFUNC pFunc)
{
    cout<<"In Traverse()..."<<endl;
    _Node *p=pHead;
    while(p)
    {
        pFunc(p->pData);    //调用访问函数来处理节点的数据
        p=p->pNext;
    }
}

//调用函数,用于链表的遍历;它的类型与PACCESSFUNC相符
void PrintInt(ANYPOINTER pData)
{
    cout<<*(reinterpret_cast<int *>(pData))<<endl;
}

//调用函数,用于链表的遍历;它的类型与PACCESSFUNC相符
void PrintDbl(ANYPOINTER pData)
{
    cout<<*(reinterpret_cast<double *>(pData))<<endl;
}

//访问函数,用于将链表中存储的值加1
void Increase(ANYPOINTER pData)
{
    int *p=reinterpret_cast<int *>(pData);
    (*p)++;
}

void main()
{
    //定义整型链表
    LinkedList lli(sizeof(int));

    for(int i=0;i<6;i++)
    {
        lli.Insert(&i);
    }

    lli.Traverse(PrintInt);    //使用PrintInt函数来遍历链表

    int d;
    if(lli.GetFirst(&d))
        cout<<"First element is"<<d<<endl;

    lli.Delete();
    lli.Traverse(PrintInt);

    lli.Traverse(Increase);

    lli.Traverse(PrintInt);

    lli.Empty();
    lli.Traverse(PrintInt);

    //定义浮点链表
    LinkedList llf(sizeof(double));

    double f;
    for(i=1;i<6;i++)
    {
        f=i*12.3456;
        llf.Insert(&f);
    }

    llf.Traverse(PrintDbl);
}






搜索更多相关主题的帖子: private include 
2011-07-05 21:40
tsyking
Rank: 2
等 级:论坛游民
帖 子:23
专家分:50
注 册:2007-6-12
收藏
得分:7 
程序代码:
bool LinkedList::IsEmpty()
{
    return pHead=NULL;
}


// 返回 true 或是 flase; 

  www . vckf  .net   专业的VC开发网站
2011-07-08 12:39
huanqiu1699
Rank: 2
等 级:论坛游民
帖 子:5
专家分:19
注 册:2011-7-7
收藏
得分:7 
bool LinkedList::Delete()
{
    cout<<"In Delete()..."<<endl;
    if(IsEmpty())
        return false;
    _Node *p=pHead;        //p指向第一个节点
    pHead=p->pNext;        //头指针指向p节点的后继
    delete p;    //删除p节点
    return true;
}
你自己看下这里正确吗?你的语法在这种情况都有一个错误,所以才运行出错,你自己好好看下你写的这个程序,这种毛病太多了
2011-07-08 13:34
快速回复:谁帮我看一下这个程序为啥运行出错?(语法貌似正确)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058117 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved