📄 linklist.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 + -