想象扯着一条铁链,想要加一环,肯定要先把下面一段的拆下来接到新环上,再把新环接到上面一段,如果先把新环接到上面一段,那下面那段就掉地上丢了。
2018-01-16
1. 单链表: 由头结点开始依次指向尾节点, 尾节点指向NULL
2. 循环链表: 尾节点的指针域指向头节点
3. 双向链表: 节点有正向和反向两个指针域
4. 静态链表: 数组起始为头节点, 指针域为数组下标, 尾节点的指针域为0
2. 循环链表: 尾节点的指针域指向头节点
3. 双向链表: 节点有正向和反向两个指针域
4. 静态链表: 数组起始为头节点, 指针域为数组下标, 尾节点的指针域为0
2018-01-16
最赞回答 / kkkimmm
ListInsert这个方法中if(i<0||i>=m_iLength) { return false;} 这个判断错了。一开始m_iLength=0; 你执行 list->ListInsert(0,&e1);时,传入i=0 就return false;了,当然也就没法正确插入元素。要理解m_iLength这个变量其实总是指向于数组最后一个元素的下一个元素。插入时是允许插入在该位置上的。删除时才不能删除该位置的元素。应该改成if(i<0 || i > m_iLengt...
2018-01-10
最新回答 / 慕斯5158549
找到问题了,list.cpp中多了几个“;”,bool List::ListInsertHead(Node *pNode)中有两句代码的顺序反了。
2018-01-04
拙见:
void listperson(list *plist){
node nod;
int i=0;
cout<<"输出删除序列"<<endl;
cin>>i;
cout<<"显示删除信息"<<endl;
plist->getelem(i,&nod);
cout<<nod.data<<endl;
cout<<"确定 删除"<<endl;
plist->listdelete(i,&nod);
void listperson(list *plist){
node nod;
int i=0;
cout<<"输出删除序列"<<endl;
cin>>i;
cout<<"显示删除信息"<<endl;
plist->getelem(i,&nod);
cout<<nod.data<<endl;
cout<<"确定 删除"<<endl;
plist->listdelete(i,&nod);
2018-01-04