菜鸟之路--线性表__链表实现

本文介绍了链表数据结构的基础知识,并详细阐述了如何在C语言中实现链表,包括创建节点、初始化链表、插入节点(在链表头部、尾部及指定位置)、删除节点等操作。此外,还提供了链表排序和合并的示例代码。
摘要由CSDN通过智能技术生成
//好久没发博客了,今天来水上一发,以后要勤劳耕作!!!!!!!!!!!!
//在使用指针的时候,要注意指针的维护。。。。。
 /*
    文件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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值