不带头结点的单链表结构体声明
typedef struct Node
{
int data;
struct Node *next;
}Node, *LinkList;
(1)初始化
void InitLinkList(LinkList *plist) //plist为二级指针,主函数传递第一个结点指针的地址
{
assert(plist!=NULL);
if(plist == NULL)
return;
*plist = NULL;
}
(2)求链表长度
int ListLength(LinkList plist) //不需要修改链表,则只需传递一级指针
{
int count=0;
while(plist != NULL)
{
count++;
plist=plist->next;
}
return count;
}
(3)得到某个结点,函数返回该结点
LinkList GetNode(LinkList plist, int pos)
{
assert(plist!=NULL);
if(plist == NULL)
return NULL;
LinkList p=plist;
while(pos > 1) //pos为1即找到该位置,链表是从第一个结点算起
{
p=p->next;
pos--;
}
return p;
}
(4)静态函数:申请结点空间
static LinkList NodeApply(LinkList next, int val)
{