按照数据结构与算法分析这本书,写了单链表的基本操作。
头文件:
#ifndef LIST_H
#define LIST_H
typedef int ElementType; //定义链表数据域类型
//链表节点数据类型定义
struct Node
{
ElementType data;
struct Node *next;
};
typedef struct Node Node;
typedef struct Node* List;
typedef struct Node* pNode;
List makeEmpty(List L); // 创建空链表
int isEmpty(List L); //判断链表是否为空
int isLast(pNode p); //判断节点p是否为尾节点
pNode find(ElementType x, List L); //查找值为x的节点
void delete(ElementType x, List L); //删除值为x的节点
void insert(ElementType x, List L, pNode p); //将x插入到p节点之后
pNode findPrevious(ElementType x, List L); //查找x元素的前驱节点
void deleteList(List L); //删除链表
pNode header(List L); //返回链表头结点
pNode first(List L); //返回链表第一个节点
pNode advance(pNode p); //返回p节点的下一个节点
ElementType retrieve(pNode p); //返回节点p的数据域
void traverse(List L); //遍历链表
pNode last(List L); //获取尾节点
#endif
基本操作:
#include <stdio.h>
#include <stdl