带头结点的单向循环链表
#include<stdlib.h>
#include<stdio.h>
#include"headList.h"
/*
功能:创建一个空链表
参数:无
返回值:
失败返回NULL
成功返回头结点的地址
*/
List * createLkList()
{
List * list = (List *)malloc(sizeof(List));
if(list == NULL)
{
printf("malloc fail\n");
return NULL;//失败返回NULL
}
list->first = NULL;
list->last = NULL;
list->n = 0;//现在还是空链表
return list;
}
/*
功能:往链表中插入一个元素
参数:
@list 头结点的地址
@x 待插入的数据
返回值:无
*/
void insert(List * list,ElemType x)
{
//1,分配空间
Node * p = (Node *)malloc(sizeof(Node));
//2,保存数据
p->data = x;
p->next = NULL;
//3,把该节点插入到链表中
if(list->first == NULL)//if(list->n == n)
{
list->first = p;
list->last = p;
}
else
{
#if 1
//尾插法
list->last->next = p;
list->last = p;
#else
//头插法</