seqlink.h
#include<stdio.h>
#pragma once
//单向链表
//双向链表
//
typedef char LinkNodeType;
typedef struct LinkNode {
LinkNodeType data;
struct LinkNode* next;
//next = NULL 结束标志 不带环
//next = 第一个节点位置 带环
//
//带头结点
//不带头节点
} LinkNode;
LinkNode* CreatNode(LinkNodeType value);//创造新节点
// 初始化链表
void LinkListInit(LinkNode** node);
void LinkListPrintChar(LinkNode* head,const char* msg);
void LinkListDestory(LinkNode** head );
//尾插一个元素到链表中
void LinkListPushBack(LinkNode** head, LinkNodeType value);
void LinkListPopBack(LinkNode** head);//尾删
void LinkListPushFrout(LinkNode** head,LinkNodeType value);//头插
void LinkListPopFourt(LinkNode** head);//头删
void LinkListInsert(LinkNode*pos,LinkNodeType value);
//新节点插入在pos之后
void LinkListEarse(LinkNode** head,LinkNode* pos);//删除指定位置
LinkNode* LinkListFind(LinkNode* head,LinkNodeType value);//查找位置
void LinkListInsertBef(LinkNode** head,LinkNode* pos,LinkNodeType value);
//在pos之前插入元素
void LinkListDelVal(LinkNode** head,LinkNodeType value);//删除指定元素
void LinkListDelAll(LinkNode** head,LinkNodeType value);//删除相同元素
size_t LinkListSize(LinkNode* head);//元素个数
seqlink.c
#include<stdio.h>
#include"seqlink.h"
#include<stdlib.h>
LinkNode* CreatNode(LinkNodeType value)
{
LinkNode* NewNode = (LinkNode*)malloc(sizeof(LinkNode));
NewNode->data = value;
NewNode->next = NULL;
return NewNode;
}
void DestoryNode(LinkNode* node)
{
free(node);
}
void LinkListInit(LinkNode** node)
{
//if(node == NULL)
//{
// //error
// printf("非法输入!\n");
// return;
//}
*node = NULL;
}
void LinkListDestory(LinkNode** head)
{
if(head == NULL)
{
//error
return;
}
if(*head == NULL)
{
//空链表
return;
}
LinkNode* cur = *head;
while(*head)
{
cur = (*head)->next;
DestoryNode(*head);
*head = cur;
}
return;
}
void LinkListPushBack(LinkNode** head,LinkNodeType value)
{
if(head == NULL)
{
//error
printf("非法输入!\n");
return;
}
if(*head == NULL)
{
/
单链表的尾删、尾插、头插、头删、随机插、删的操作
最新推荐文章于 2021-08-22 20:22:54 发布
![](https://img-home.csdnimg.cn/images/20240611030827.png)