c语言单链表交换节点排序,单链表排序交换节点算法

本文介绍如何使用C语言实现单链表的排序,包括选择法、比较法和排序法。通过一系列链表操作,如插入、删除、获取元素、查找元素等,实现了单链表节点的交换排序。同时,展示了单链表的交集、并集和差集的计算方法。
摘要由CSDN通过智能技术生成

单链表交换节点排序,包括选择法、比较法、排序法。

用C实现代码如下:

#include

#include

#include

#define TRUE 1

#define FALSE 0

#define ERROR 0

#define OVERFLOW 0

#define OK 1

typedef int Status;

typedef int ElemType;

struct LNode

{

ElemType data;

struct LNode *next;

};

typedef struct LNode LinkList;

LinkList *InitList(LinkList *L);/*初始化一个链表*/

void DestoryList(LinkList *L);/*销假链表*/

void ClearList(LinkList *L);/*清空链表 */

Status ListEmpty(LinkList *L);/*判断链表是否为空 */

int ListLength(LinkList *L);/*返回表的长度 */

Status GetElem(LinkList *L,int i,ElemType *e);/*返回第i个元素的值 */

int LocateElem(LinkList *L,ElemType e,Status(*compare)(ElemType));/*返回L中第1个与e满足关系compare()的数据元素的位序*/

Status PriorElem(LinkList *L,ElemType cur_e,ElemType *pre_e);/*返回前驱的值 */

Status NextElem(LinkList *L,ElemType cur_e,ElemType *next_e);/*返回后继的值*/

Status ListInsert(LinkList *L,int i,ElemType e);/*在带头结点的单链表中第i个位置之前插入元素e*/

Status ListDelete(LinkList *L,int i,ElemType *e);/*在带头结点的单链表中,删除第1个元素,用e返回其值勤*/

void ListTraverse(LinkList *L,void(*visit)(ElemType));/*依次对L的每个元素调用函数visit() */

void print(ElemType e);

Status equal(ElemType c1,ElemType c2);

void Listprint(LinkList *L);

void Merge(LinkList *La,LinkList *Lb);/*两个集合的交集 */

void Merge1(LinkList *La,LinkList *Lb);/*利用函数实现集合的交集*/

/*void Differ(LinkList La,LinkList Lb); *//*两个集合的差集 */

void Union1(LinkList *La,LinkList *Lb);/*利用函数实现集合的并集 */

void Differ(LinkList *La,LinkList *Lb);/*利用函数实现集合的差集 */

LinkList *InitList(LinkList *L)/*构造一个空链链表*/

{

L=(LinkList*)malloc(sizeof(LinkList));/*产生头结点,并使L指向此头结点*/

if(L==NULL) exit(OVERFLOW);

L->next=NULL;

return L;

}

void DestroyList(LinkList *L)/*销毁L*/

{

LinkList *q;

while(L!=NULL)/*L指向结点*/

{

q=L->next;/*q指向首元结点*/

free(L);

L=q;/*L指向原首结点*/

}

}

void ClearList(LinkList *L)

{ /*将表清

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值