先定义结点:
struct LinkList
{
int data;
struct LinkList *next;
};
头插法创建带头结点的单链表的函数:
头插法在每次插入新结点时都将新结点插到第一个结点的位置上,即在链表的头部插入。每次插入时都要先使新结点的后继变为头结点原来的后继,即头结点所链接的原第一个结点,再使头结点的后继变为新结点。
LinkList* CreateListHead(int *arr, int length) // 头插法创建带头结点的单链表
{
int i;
LinkList *head = (LinkList*)malloc(sizeof(LinkList)); // 创建头结点
head->data = length; // 头结点数据域存链表长度
head->next = NULL;
for(i=0; i<length; i++)
{
LinkList *p = (LinkList*)malloc(sizeof(LinkList)); // 为结点申请空间
p->data = arr[i]; // 节点数据域赋值
p->next = head->next; // 头插法
head->next = p;
}
return head; // 返回头结点
}
头插法创建无头结点的单链表:
LinkList* CreateListHead_noHNODE(int *arr, int length) // 头插法创建无头结点的单链表
{
int i;
LinkList *head; // 创建头指针 *head此时为一个指向LinkList型数据的指针
head = NULL;
for(i=0; i<length; i++)
{
LinkList *p = (Lin

本文介绍了使用C++编程语言实现头插法和尾插法创建单链表的详细过程,包括带头结点和不带头结点的两种情况。通过示例代码展示了如何动态分配内存、初始化结点以及插入数据,最后给出了测试用例以展示不同插入方法创建的链表结构。
最低0.47元/天 解锁文章
355

被折叠的 条评论
为什么被折叠?



