linux 链表头文件,Linux下单链表的实现
该单链表在Linux系统GCC编译器下编码调试通过,初学者请多指教。
makefile文件
main:main.o linklist.o
gcc -o main main.o linklist.o
main.o:main.c
gcc -c main.c
linklist.o:linklist.c linklist.h
gcc -c linklist.c
clean:
rm *.o main
main.c主文件
#include #include #include "linklist.h"
int main()
{
linklist *mylist = NULL;
int len = 10;
ElemType myelem = 0;
mylist = (linklist *)malloc(sizeof(linklist));//头指针
mylist->next = NULL;
printf("hello world\n");
CreatList(mylist , len);
PrintList(mylist);
if(!InsertList(mylist , 9 , 55)){
printf("InsertList success!\n");
PrintList(mylist);
}
else {
printf("InsertList fail!\n");
}
if(!DeleteList(mylist , 1 ,&myelem)){
printf("DeleteList success!\n");
printf("the deleted elem is %d\n",myelem);
PrintList(mylist);
}
else {
printf("DeleteList success!\n");
}
DeleteAllList(mylist);
PrintList(mylist);
return 0;
}
linklist.h头文件
#define OK 0//no error
#define ERROR 1//some error
typedef int ElemType;
typedef struct node{
ElemType data;
struct node *next;
}linklist,node;
typedef enum bool{
ok = 0,
error = 1
}bool;
void CreatList(linklist *L,int len);
void PrintList(linklist *L);
void DeleteAllList(linklist *L);
bool InsertList(linklist *L , int order , ElemType elem);
bool DeleteList(linklist *L , int order , ElemType *elem);
linklist.c实现文件
#include #include #include #include #include "linklist.h"
//创建链表,长度为len
void CreatList(linklist *L,int len)
{
linklist *p = L;
int j=0;
srand(time(0));
while(j++ < len){
p=(linklist *)malloc(sizeof(linklist));
p->data = rand()%100 + 1;
p->next = L->next;
L->next = p;
}
printf("\nCreatList is finished\n");
}
//打印链表
void PrintList(linklist *L)
{
linklist *p = L->next;//指向第一个节点
if(NULL == p){
printf("\nLinkList is empty,in PrintList()\n");
return;}
else while(NULL != p){
printf(" %d ",p->data);
p = p->next;
}
printf("\nPrintList Finished\n");
}
//整表删除
void DeleteAllList(linklist *L)
{
linklist *p = L->next;
linklist *q = NULL;
while( NULL != p){
q = p;
p = p->next;
free(q);
}
L->next = NULL;
printf("\nDeleteList Finished\n");
}
//第order位置插入elem元素
bool InsertList(linklist *L , int order , ElemType elem)
{
linklist *p = L;
node *q;
int j = 0;
while(p && j < order){
p = p->next;
++j;}
if(!p || j > order){
return ERROR;
}
q = (linklist *)malloc(sizeof(linklist));
q->data = elem;
q->next = p->next;
p->next = q;
return OK;
}
//删除第order个元素,并存入*elem
bool DeleteList(linklist *L , int order , ElemType *elem)
{
linklist *p = L;
node *q;
int j = 0;
while(p && j < order){
p = p->next;
++j;}
if(!p || j > order){
return ERROR;
}
q = p->next;
p->next = q->next;
*elem = q->data;
free(q);
return OK;
}
linux 链表头文件,Linux下单链表的实现相关推荐
- linux的头文件下载,Linux内核头文件(linux headers)
更新 Linux 内核头文件(linux headers) 三 8th, 2013 2,474 views | 发表评论 | Trackback 一般来说,如果不是自己编译 kernel,那么更新头文 ...
- linux clock头文件,Linux common clock framework(1)_概述
Linux common clock framework(1)_概述 作者:wowo 发布于:2014-10-20 23:06 分类:电源管理子系统 1. 前言 common clock framew ...
- linux 内核头文件 linux kernel header
1.内核头文件的发展历史 在 Linux 2.2/2.4 的纯真年代,内核头文件一直保持着 Unix 世界的"KISS"传统,只需将内核源码树中的头文件直接复制到 ...
- linux msleep 头文件,Linux延迟函数
从Linux应用层和内核两方面来区分下延迟函数: 1. 应用层 1> sleep usleep 微秒级 头文件为: 3> nanosleep 相比标准UNIX 的sleep 调用具有更高高 ...
- linux close 头文件,Linux open close read write lseek函数的使用
我们经常需要在Linux中进行文件操作,今天我就来分享下文件操作用到的一些函数 1 open 所需头文件: 函数原型:int open(const char *pathname,flags,int p ...
- linux fread 头文件,Linux文件操作
Linux中一切都是文件.如普通文件,目录,设备,管道等. 操作这些文件有两种方式,调用系统函数和使用标准I/O库. 一.调用系统函数 1.文件描述符:数值类型,表示打开的文件标识 程序运行时,会首先 ...
- linux默认头文件,Linux安装合适内核头文件的方法
摘要 腾兴网为您分享:Linux安装合适内核头文件的方法,桌面时钟,中建在线,圆通金刚,西餐菜谱等软件知识,以及万象,我不信表情包,兔子洞,服你网,电商直播app,网络工具箱,ffu文件,电脑功率计算 ...
- linux abort 头文件,Linux编程—出错处理之assert,abort,exit,atexit,strerror
Linux编程--出错处理之assert,abort,exit,atexit,strerror 1.assert() http://blog.chinaunix.net/u/16292/showart ...
- linux sockaddr_in头文件,linux网络编程常用头文件
sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函 ...
最新文章
- 纪录片 量子力学揭秘
- 有趣的c语言程序Code,一个有趣的小程序
- Python Tutorial(六):模块
- Centos常用快捷键
- 我什么计算机作文600字,我家的电脑作文600字
- AJAX 状态值(readyState)与状态码(status)详解
- 处理手机上点击链接出现的蓝色边框
- 使用javamail的一些问题总结
- 【笔记】FWT 快速沃尔什变换
- 换SSD,WIN10系统备份镜像迁移GHOST入坑,DISM好用,修复WINRE,绿联集线器导致USB硬盘供电不足
- 作为项目经理如何做好项目进度管理
- catia怎么添加毛坯_CATIA教程
- 解析仿人化机器人技术的路径
- Spring之Bean后处理器——BeanPostProcessor的使用与源码解析
- Python OCR识别图片
- Rational License Key Error的解决办法
- 使用EKL(Elasticsearch、Kibana、Logstash)进行服务器日志的汇聚与监控
- 提高网吧上座率,TG-NET网吧光纤万兆方案
- Zookeeper 原理与优化
- 编程题目+数据库题目总结(3)
热门文章
- jquery.easyui.tabs 中的首个tabs被最后tabs覆盖的问题解决方法
- php缩放gif和png图透明背景变成黑色的解决方法_php技巧
- 如何解决”ArcGIS Server Site is currently being configured by another administrative operation“的问题
- Unity 生成APK 出错的解决方法
- 在less中不能正常使用css3的calc属性的解决方法
- 几种常见的Windows 服务器无法联网/无法连接远程桌面等故障解决方案
- 如何确定C语言中数组的大小?
- android中上拉下滑布局,3年以上勿进!最简单的Android自定义ListView下拉刷新与上拉加载,代码直接拿去用~...
- python36安装opencv3.2_Python3.5.3下配置opencv3.2.0的操作方法
- 鸡兔同笼:不用暴力也可以