监控设备东莞网站建设,软件开发与网站开发哪个好,广告联盟cpc,输入法网站设计我们创建一个长度为n的链表时#xff0c;可以采取头插法创建或者尾插法创建#xff0c;本篇博客我们采取头插法来创建#xff0c;#xff08;作者只学了头插#xff0c;尾插等以后来补qwq)。
我们先来画图来看看头插的创建形式把#xff0c;会了原理再写代码。 首先是我…我们创建一个长度为n的链表时可以采取头插法创建或者尾插法创建本篇博客我们采取头插法来创建作者只学了头插尾插等以后来补qwq)。
我们先来画图来看看头插的创建形式把会了原理再写代码。 首先是我们的一号和二号节点我们发现他们是相连的。现在我们使用头插法创建链表要怎么做呢其实很简单头插就是把我们新创建的节点放到最前面我们每次都把创建的节点放到最前面也就是1好节点的后面。大家注意了这个一号节点不要存储任何数据或者这能存储链表的长度信息它是我们的头节点。我们创建它只是为了好遍历以后的节点信息。
看图 我们把一号节点的next地址连接到三号节点三号的next地址连接到2号节点上这就是头插。
上代码解释
void InitList(LinkedList a,int n){int e;for(e0;en;e){Lnode *b(Lnode*)malloc(sizeof(Lnode));b-ae;b-nexta-next;a-nextb;}
}
//a号节点是指向节点我们之后创建的节点都是不断放在a号节点的后面a号节点只是用来方便遍历。
//我们创建一个b节点并为他的数据域赋予数值接着我们令b号节点链接a号节点链接的节点并使得a号节点可以连接到b号节点。
//如果是一开始只有指向a号节点我们就相当于创建一个尾节点指向空令a号节点联系到尾节点
结构体代码
typedef struct Lnode{int a;struct Lnode* next;
}Lnode,*LinkedList;//创建结构体把结构体的别名起为Lnode
//把结构体Lnode的指针起名为LinkedList
//学过Java的同学是不是DNA动了呢qwq
创建指向节点的代码
void test(){LinkedList a(LinkedList)malloc(sizeof(Lnode));//动态开辟空间a-nextNULL;//令指向节点的next指向域为NULLint b;cinb;//输入链表的长度InitList(a,b);for(int c0;cb;c){//打印验证成果aa-next;couta-aendl;}free(a);//释放a的空间
} 详细代码
#includebits/stdc.h
using namespace std;
typedef struct Lnode{int a;struct Lnode* next;
}Lnode,*LinkedList;
void InitList(LinkedList a,int n){int e;for(e0;en;e){Lnode *b(Lnode*)malloc(sizeof(Lnode));b-ae;b-nexta-next;a-nextb;}
}
void test(){LinkedList a(LinkedList)malloc(sizeof(Lnode));a-nextNULL;int b;cinb;InitList(a,b);for(int c0;cb;c){aa-next;couta-aendl;}free(a);
}
int main(){
test();return 0;
}
运行结果 大家可以看到这个6是我输入的5到0为答案。为什么呢我们采用头插会把新创建的节点不断往前安防而我们赋值又是从0开始这就使得我们的最后一次赋值5用头插放到最前面了。