⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linklist.h

📁 快速排序、合并排序、插入排序、堆排序、计数排序等算法的C语言实现
💻 H
字号:
#include<stdio.h>
#include<malloc.h>
#define TRUE 1
#define FALSE 0

//单链表头文件
typedef int ElemType;
typedef struct ListNode
{//链表节点
	ElemType data;
	struct ListNode *next;
}LNode, *LinkList;

LinkList InitList_L()
{//初始化链表
	LinkList L;
	L = (LinkList)malloc(sizeof(LNode));
	L -> next = NULL;
	return L;
}

void DestroyList_L(LinkList L)
{
	L->next=NULL;
	free(L);
}

void ListClear_L(LinkList L)
{//清空链表
	L -> next = NULL;
}

int ListEmpty_L(LinkList L)
{//判断是否为空
	if(L -> next == NULL)
		return TRUE;
	else
		return FALSE;
}

long ListLength_L(LinkList L)
{//求链表长度
	LinkList p;
	long count = 0;
	p=L->next;
	while(p!=NULL)
	{
		count++;
		p=p->next;
	}
	return count;
}

LinkList GetElem_L(LinkList L,long i)
{//查找链表元素
	LinkList p;
	long j;
	p=L->next;
	j=1;
	while((p!=NULL)&&(j<i))
	{
		p=p->next;
		j++;
	}
	if(p==NULL||j<i)
		printf("ERROR!");
	return p;
}

long ElemLocate_L(LinkList L,ElemType e)
{//定位链表元素
	LinkList p;
	long j;
	p=L->next;
	j=1;
	while(p!=NULL&&p->data!=e)
	{
		p=p->next;
		j++;
	}
	if(p)
		return j;
	else 
		return 0;
}

int ListInsert_L(LinkList L,long i,ElemType e)
{//插入链表元素
	LinkList p,s;
	long j;
	j=1;
	p=L;
	while(p&&j<i)
	{
		p=p->next;
		j++;
	}
	if(!p||j>i)
	{
		printf("ERROR!");
		return FALSE;
	}
	else
	{
		s=(LinkList)malloc(sizeof(LNode));
		s->data=e;
		s->next=p->next;
		p->next=s;
		return TRUE;
	}
}

int ListDel_L(LinkList L,long i)
{//删除链表元素
	LinkList p,q;
	long j;
	j=1;
	p=L;
	while(p->next&&j<i)
	{
		p=p->next;
		j++;
	}
	if(p->next==NULL)
		return FALSE;
	else
	{
		q=p->next;
		p->next=q->next;
		free(q);
		return TRUE;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -