一:以list类作为当前的指针空间
class list{
public:
int value;
list *next;
list(){
value=0; //创建list对象后自动执行
next=NULL;
}
};
二:head作为头指针,作用是为移动的指针定一个家,移动指针想回家时就可以通过head返回
list *head=NULL,
head=new list();
head->next=NULL;
head->value=15;
三:可以使用循环语句为链表赋值
每次循环,curr都要了一个list类空间(curr=new list()),给curr的value值有位置存放
然后为curr指针value元素赋值
原先head->value=15,此时curr->next=head,那么0-15,新建立的节点放在了head的前面,以此类推
for(int i=0;i<10;i++){
curr=new list();
curr->value=i;
curr->next=head;
head=curr;
}
四:链表的插入操作
想一想:假如0-1-2-3这样分布,想把100插到1的后面
首先得把curr的位置返回到头指针head先,然后curr在0的位置,curr->next=1;
把已经赋值的curr链表移动到1的位置
给insert指针一个list空间
insertz的value指向100;
curr的next(下一节点)指向insert(100)------->0 ------ 1-----2------3 ,可以发现100后面没有链了,这样不符合链表的连续性,得把100后面的链链接到1上
|_100
那么此时把100的next(下一节点)指向1(即0的下一节点,执行完while循环的curr->next位置)就完成了,0 1-------2 ------3
curr=head; |_100_|
while(curr->value!=1){
curr=curr->next;
}
next=curr->next;
insert=new list();
insert->value=100;
curr->next=insert;
insert->next=next;
curr=head;
while(curr!=NULL){
cout<
}
五:链表的删除工作
想象一下:0-1-2-3-4链表结构。删掉2
我们的目的是删除节点指针pre移动到1,curr可以指到3位置,也就是curr到了2位置,2->next=3;那么我门直接把1->next = 2->nextt,就可以把2的链表断掉
0-1-3-4
还是一样curr先回家,再去找朋友
循环结束pre移动到1位置,curr位于2位置
因为先前动态newl了一个空间,那么删除之后可不要给它成为宇宙垃圾,把它delete掉吧 curr(2);
pre(1)->next=curr->next(3)
curr=head;
while(curr->value!=2){
pre=curr;
curr=curr->next;
}
next=curr->next;
pre->next=next;
delete curr;
完整的代码如下:
#include