问题

在理解使用c ++创建单个链接列表的教程的代码(而不是含义)方面,我遇到了一些困难。



typedef int ElemType;
struct Node{
    ElemType data;
    Node *next;
};

class LinkList{
private:
    Node *Head;
public:
    LinkList();
    ~LinkList();
    void CreateList1(int n);
    void CreateList2(int n);
    void ListInsert(int i, int e);
    int ListDelete(int i);
    int GetElem(int i);
    int LocateElem(int e);
    int ListLength();
};

void LinkList::CreateList1(int n) {
    //create a linked list by inserting the element in the head
    Node *p, *s;
    p = Head;
    cout<<"请依次输入"<<n<<"个数据元素值"<<endl;
    for (int i =1; i<n; i++){
        s = new Node;
        cin>>s->data;
        s->next=p->next;
        p->next=s;              // what does it mean? I don't get it.
    }
}

void LinkList::CreateList2(int n) {
    //create a linked list by inserting the element in the end
    Node *p, *s;
    p = Head;
    cout << "请依次输入" << n << "个数据元素值" << endl;
    for (int i = 1; i < n; i++) {
        s = new Node;
        cin >> s->data;
        p->next=s;
        p=s;                   // what does it mean? I don't get it.
    }
}


注意

我不理解的代码段已被注释。任何人都可以用有启发性的文字或数字解释代码吗?提前致谢。

最佳答案

p是指向插入点的指针。

p之后插入新节点。

在第一种情况p->next=s中,我们将新节点s挂在p所指向的节点上,但是p本身不会改变。下一个节点仍将在Head之后插入。

在第二种情况下,p->next=s仍然完成,但是随后我们执行p=s,因此插入点p移动到列表的最后一个元素s。下一个节点将插入到列表的末尾,而不是头。

关于c++ - 如何理解单链列表的创建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46934535/

10-14 00:30