//好久没发博客了,今天来水上一发,以后要勤劳耕作!!!!!!!!!!!!
//在使用指针的时候,要注意指针的维护。。。。。
/*
文件link.h
链表的头文件,定义了链表的存储结构,以及操作方法
*/
#ifndef LINK_L
#define LINk_L 0
#define OK 1
#define FALSE 0
#define ERROR -1
typedef int Status;
//typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode * next;
}Link,* Position;
typedef struct{
Link * head;
Link * tail;
} LinkList;
Status MakeNode(Link **p,ElemType e);
void FreeNode(Link **p);
Status ListEmpty(LinkList *l);
Status InitList(LinkList **l);
Status DestroyList(LinkList *l);
Status ClearList(LinkList *l);
Status InsFirst(LinkList *l,Link *h,Link *s);
Status DelFirst(LinkList *l,Link *h,Link *q);
Status Append(LinkList *l,Link *s);
Status Remove(LinkList *l,Link *q);
Status InsBefore(LinkList *l,Link *q,Link *s);
Status InsAfter(LinkList *l,Link *q,Link *s);
Status SetCurElem(Link *q,ElemType e);
ElemType GetCurElem(Link *q);
Status ListEmpty(LinkList *l);
int ListLength(LinkList *l);
Position GetHead(LinkList *l);
Position GetLast(LinkList *l);
Position PriorPos(LinkList *l,Link * p);
Position NextPos(LinkList *l,Link * p);
Status LocatePos(LinkList *l,int i,Link *p);
Position LocateElem(LinkList *l,ElemType e,Status (* compare)(ElemType,ElemType));
Status LocateTraverse(LinkList *l,Status (* visit)());
Status MergeList_L(LinkList *la,LinkList *lb,LinkList *lc,int (* compare)(ElemType,ElemType));
Status ListSort(LinkList *l,int (* compare)(ElemType,ElemType));
#endif // LINK_L
/*
文件link.cpp
包含了方法的实现,以及新增的辅助方法
*/
#include<stdio.h>
#include<stdlib.h>
#include "Link.h"
Status MakeNode(Link **p,ElemType e){
*p = (Link *)malloc(sizeof(Link));
if(p != NULL){
(*p)->data
菜鸟之路--线性表__链表实现
最新推荐文章于 2023-05-27 15:59:47 发布
本文介绍了链表数据结构的基础知识,并详细阐述了如何在C语言中实现链表,包括创建节点、初始化链表、插入节点(在链表头部、尾部及指定位置)、删除节点等操作。此外,还提供了链表排序和合并的示例代码。
摘要由CSDN通过智能技术生成