C语言链表完整操作演示语言链表完整操作演示
本文实例为大家分享了C链表操作演示的具体代码,供大家参考,具体内容如下
头文件:link_0505.h
/*
链表演示
*/
#ifndef __LINK_0505
#define __LINK_0505
typedef struct node{
int num;
struct node* p_next;
}node;
typedef struct
{
node head,tail;
}link;
//链表的初始化函数
void link_init(link *);
//链表的清理函数
void link_deinit(link *);
//判断链表是否空的函数
int link_empty(link *);
//判断链表是否满的函数
int link_full(link *);
//统计有效数字个数的函数
int link_size(link *);
//在最前边插入数字的函数
int link_add_head(link *, int );
//在最后边插入新的数字的函数
int link_append(link *, int );
//把数字按照顺序插入到链表的函数
int link_insert(link *, int);
//删除最前面数字的函数
int link_remove_head(link *);
//删除最后一个有效数字
int link_remove_tail(link *);
//删除某个给定数字的函数
int link_remove(link *, int );
//获得第一个有效数字的函数
int link_get_head(link *, int *);
//获得最后一个有效数字的函数
int link_get_tail(link *, int *);
//获得指定编号数字的函数
int link_get(link *, int *, int );
#endif
实现代码: link_0505.cpp
/*
链表演示
*/
#include "stdlib.h"
#include "link_0505.h"
//链表的初始化函数
void link_init(link *p_link)
{
p_link->head.p_next = &(p_link->tail);
}
//链表的清理函数
void link_deinit(link *p_link)
{
while(p_link->head.p_next != &(p_link->tail))
{
node *p_first = &(p_link->head);
node *p_mid = p_first->p_next;
node *p_last = p_mid->p_next;
p_first->p_next = p_last;
free(p_mid);
p_mid = NULL;
}
}
//判断链表是否空的函数
int link_empty(link *p_link)