问题
在理解使用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/