C++建立链表和插入删除! 实在是学不懂。。尤其是 怎么建立一个单链表。。求教!

书上的开头是这样的#incldue<iostream.h>typedefintElemType;structNodeType{ElemTypedata;NodeType*... 书上的开头是这样的
#incldue<iostream.h>
typedef int ElemType;
struct NodeType
{
ElemType data;
NodeType *next;
};
class LinkList
{private:
NodeType *Head;
public:
LinkList();
~LinkList();
void Creat();
void Display();
void Insert(int i,ElemType x);
ElemType Delete(int i);
};
成员函数声明好了,不知道怎么定义。。。求解!!!!
展开
 我来答
百度网友a4a032c
2013-05-28 · TA获得超过308个赞
知道小有建树答主
回答量:628
采纳率:0%
帮助的人:275万
展开全部

你要做的是 单向链表 吧,也就是只有向下查找没有向上查找的链表。

你的 

void Insert(int i,ElemType x)//在i后面插入,例如i = 0;那么就是插入在1;
{
    NodeType *p = Head,*pNT;
    for(int x = 0;x != i;++x)//从0开始
        if(p != nullptr)p = p->next;
        else return;//如果i超过了范围就返回,也可抛异常,这样是没有插入的;
    pNT = p->next;
    p->next = new NodeType();
    p->next->data = x;
    p->next->next = pNT;
}

ElemType Delete(int i)
{
    ElemType result;
    NodeType *p = Head,*pAim = nullptr;
    if(i == 0)
    {
        Head = Head.next;
        result = p->data;
        delete p;
        return result;
    }
    for(int x = 0;x != i - 1;++x)//这里是到了要删除的前一个就停了
        if(p != nullptr)p = p.next;
        else throw ...;//话说你是想抛出异常还是想返回,自己定义异常吧
    pAim = p.next;
    p->next = pAim->next;
    result = pAim->data;
    delete pAim;
    return result;
}
//手打的没有用编译器调试过,你大概能够了解思路了吧,就是
借助head这个头查到要操作的元素,然后操作,你自己试下,
其实不难的。
Display()就是重头查到空指针就停,一个个地都 陈列(display)出来
Create()就是把给出第0个也就是Head的具体对象吧。
如果你想一开始是空的,那么你要自己改写Insert
因为我刚才把head为nullptr的情况忽略了,Insert会把这种情况当作越界.
追问
其实我想看Creat()和Display()。。
追答
void Create()
{
    if(Head == nullptr){ Head = new NodeType; Head->next = nullptr; }
    //一般创建的时候是空链表的话,这样设置0号也就是查不 ead其实并没有储存数据
}
Display()
{
    for(NodeType *p = Head;p != nullptr;p = p->next)
        std::cout<<p->data<<std::endl;
}

这两个都比较简单都是一条语句;

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式