头文件
#ifndef __LINKLIST_H__
#define __LINKLIST_H__
#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <malloc.h>
typedef int DataType;
typedef struct Node
{
DataType _data;
struct Node* _next;
}Node,*pNode,*pList;
void InitLinkList(pList* pplist);//初始化
void DestroyList(pList* pplist);//销毁单链表
void Display(pList plist);//遍历单链表
void PushBack(pList* pplist, DataType x);//尾插
void PopBack(pList* pplist);//尾删
void PushFront(pList* pplist, DataType x);//头插
void PopFront(pList* pplist);//头删
pNode Find(pList plist, DataType x);//查找元素的位置
void Insert(pList* pplist, pNode pos, DataType x);//指定位置插入
void Erase(pList* pplist, pNode pos);//指定位置删除
void Remove(pList* pplist, DataType x);//删除指定的元素
void RemoveAll(pList* pplist, DataType x);//删除指定元素的所有
void Sort(pList* pplist);//单向链表的排序
#endif
程序实现文件
#include "linklist.h"
void InitLinkList(pList* pplist)
{
assert(pplist);
*pplist = NULL;
}
void DestroyList(pList* pplist)
{
pNode cur = NULL;
pNode del = NULL;
assert(pplist);
cur = *pplist;
while(cur)
{
del = cur;
cur = cur->_next;
free(del);
}
free(cur);
*pplist = NULL;
}
void PushBack(pList* pplist, DataType x)
{
pNode cur = NULL;
pNode newnode = NULL;
assert(pplist);
cur = *pplist;
newnode = (pNode)malloc(sizeof(Node));
newnode->_data