废话不多说,直接上代码:
先是.h文件,用来定义成员方法和成员变量:
#pragma once
#define TRUE 1
#define FALSE 0 //C语言里没有bool 故用宏定义实现
typedef int ElemType;
typedef union Data
{
ElemType val;
int length;
}Data;
typedef struct Node
{
Data data;//数据域
struct Node *next;//指针域
}Node;
typedef struct HList
{
Node head;
}HList,*pHList;
//初始化
void InitHList(pHList list);
//显示元素
void ShowHList(pHList list);
//按位置插入 头插 尾插
int InsertHListPos(pHList list,ElemType val,int pos);
int InsertHListHead(pHList list,ElemType val);
int InsertHListTail(pHList list,ElemType val);
//按位置删 头删 尾删
int DeleteHListPos(pHList list,int pos);
int DeleteHListHead(pHList list);
int DeleteHListTail(pHList list);
//按值删
int DeleteHListVal(pHList list,ElemType val);
//去重
int DeleteHListRepeatVal(pHList list);
//清空
void ClearHList(pHList list);
//销毁
void DestroyHList(pHList list);
之后是.c文件,用来编写实现的方法:
#include "HList.h"
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
//判空操作
static void DeterPointIsNull(pHList list)
{
assert(list != NULL);
if(list