单链表的创建
单链表一般有两种创建方法,一种是头插法,一种是尾插法。
头插法是将新的节点不断的添加到头结点的后面,尾插法试讲新节点不断添加到链表的最后面,并将尾结点的指针域指向NULL;已达成创建链表的目的。
头插法
头插法是先定义一个结构体指针,并给其分配相应的内存空间,再将头指针的指针域赋值给新建结构体指针的指针域,让新建结构体指针的指针域可以指向头指针所指向的地方,再将新建结构体指针赋值给头指针的指针域,使得头指针指向新建结构体指针,这样就将一个节点插入到了链表中了,这及为头插法。
#include<stdio.h>
#include<Windows.h>
typedef struct
{
int data;
stu *next;
}stu;
void lnitLink(stu *&L)//链表的初始化
{
L=(stu*)malloc(sizeof(stu));
L->next=NULL;
}
void Listlnsert(stu *&L,int n)//头插法
{
stu*m=(stu*)malloc(sizeof(stu));
m->data=n;
m->next=L->next;
L->next=m;
}
尾插发
尾插发是先构建一个个结构体指针1,并给其分配相应的内存空间,在构建一个结构体指针2,将头指针赋值给它,给结构体指针1的数据域赋值后,将结构体指针1赋值给结构体指针2的指针域是结构体的头指针可以指向第一个新建节点,然后,将结构体指针1赋值给结构体指针2,使得结构体指针1变成结构体指针2,最后将NULL赋值给结构体指针2的指针域。
#include<stdio.h>
#include<Windows.h>
typedef struct
{
int data;
stu *next;
}stu;
int a[10] = {1,2,3,4,5,6,7,8,9,10};
void lnitLink(stu *&L)//链表的初始化
{
L = (stu*)malloc(sizeof(stu));
L->next = NULL;
}
void Listlnsert(stu *&L, int a[10])//尾插法
{
int i;
stu *m, *n;
m = L;
for (i = 0; i < 10; i++)
{
n= (stu*)malloc(sizeof(stu));
n->data = a[i];
m->next = n;
m = n;
}
m->next = NULL;
}