建立头结点
#pragma once
typedef struct CNode
{
int data;
struct CNode *next;
}CNode,*Clist;//CNode*==Clist
//初始化函数
void InitList(Clist plist);
//头插
bool Insert_head(Clist plist,int val);
//尾插
bool Insert_tail(Clist plist,int val);
//在plist中查找关键字key,找到返回结点,失败返回NULL
CNode * Search(Clist plist,int key);
//判空
bool IsEmpty(Clist plist);
//删除plist中的第一个key
bool DeleteVal(Clist plist,int key);
//获取数据长度
int GetLength(Clist plist);
//输出所有数据
void Show(Clist plist);
//清空数据
void Clear(Clist plist);
//销毁动态内存
void Destroy(Clist plist);
建立list.cpp
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include"list.h"
//判空
static void DeterPointNull(Clist plist)
{
assert(plist!=NULL);
if(plist==NULL)
{
exit(0);
}
}
//初始化函数
void InitList(Clist plist)
{
DeterPointNull(plist);
plist->next=plist;//使其成为循环链表
}
//头插
bool Insert_head(Clist plist,int val)
{
DeterPointNull(plist);
CNode *p=(CNode *)malloc(sizeof(CNode));
p->next=plist->next;
p->data=val;
plist->next=p;
return true;
}
//尾插
bool Insert_tail(Clist plist,int val)
{