该单链表在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下单链表的实现相关推荐

  1. linux的头文件下载,Linux内核头文件(linux headers)

    更新 Linux 内核头文件(linux headers) 三 8th, 2013 2,474 views | 发表评论 | Trackback 一般来说,如果不是自己编译 kernel,那么更新头文 ...

  2. linux clock头文件,Linux common clock framework(1)_概述

    Linux common clock framework(1)_概述 作者:wowo 发布于:2014-10-20 23:06 分类:电源管理子系统 1. 前言 common clock framew ...

  3. linux 内核头文件 linux kernel header

    1.内核头文件的发展历史         在 Linux 2.2/2.4 的纯真年代,内核头文件一直保持着 Unix 世界的"KISS"传统,只需将内核源码树中的头文件直接复制到 ...

  4. linux msleep 头文件,Linux延迟函数

    从Linux应用层和内核两方面来区分下延迟函数: 1. 应用层 1> sleep usleep 微秒级 头文件为: 3> nanosleep 相比标准UNIX 的sleep 调用具有更高高 ...

  5. linux close 头文件,Linux open close read write lseek函数的使用

    我们经常需要在Linux中进行文件操作,今天我就来分享下文件操作用到的一些函数 1 open 所需头文件: 函数原型:int open(const char *pathname,flags,int p ...

  6. linux fread 头文件,Linux文件操作

    Linux中一切都是文件.如普通文件,目录,设备,管道等. 操作这些文件有两种方式,调用系统函数和使用标准I/O库. 一.调用系统函数 1.文件描述符:数值类型,表示打开的文件标识 程序运行时,会首先 ...

  7. linux默认头文件,Linux安装合适内核头文件的方法

    摘要 腾兴网为您分享:Linux安装合适内核头文件的方法,桌面时钟,中建在线,圆通金刚,西餐菜谱等软件知识,以及万象,我不信表情包,兔子洞,服你网,电商直播app,网络工具箱,ffu文件,电脑功率计算 ...

  8. linux abort 头文件,Linux编程—出错处理之assert,abort,exit,atexit,strerror

    Linux编程--出错处理之assert,abort,exit,atexit,strerror 1.assert() http://blog.chinaunix.net/u/16292/showart ...

  9. linux sockaddr_in头文件,linux网络编程常用头文件

    sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函 ...

最新文章

  1. 纪录片 量子力学揭秘
  2. 有趣的c语言程序Code,一个有趣的小程序
  3. Python Tutorial(六):模块
  4. Centos常用快捷键
  5. 我什么计算机作文600字,我家的电脑作文600字
  6. AJAX 状态值(readyState)与状态码(status)详解
  7. 处理手机上点击链接出现的蓝色边框
  8. 使用javamail的一些问题总结
  9. 【笔记】FWT 快速沃尔什变换
  10. 换SSD,WIN10系统备份镜像迁移GHOST入坑,DISM好用,修复WINRE,绿联集线器导致USB硬盘供电不足
  11. 作为项目经理如何做好项目进度管理
  12. catia怎么添加毛坯_CATIA教程
  13. 解析仿人化机器人技术的路径
  14. Spring之Bean后处理器——BeanPostProcessor的使用与源码解析
  15. Python OCR识别图片
  16. Rational License Key Error的解决办法
  17. 使用EKL(Elasticsearch、Kibana、Logstash)进行服务器日志的汇聚与监控
  18. 提高网吧上座率,TG-NET网吧光纤万兆方案
  19. Zookeeper 原理与优化
  20. 编程题目+数据库题目总结(3)

热门文章

  1. jquery.easyui.tabs 中的首个tabs被最后tabs覆盖的问题解决方法
  2. php缩放gif和png图透明背景变成黑色的解决方法_php技巧
  3. 如何解决”ArcGIS Server Site is currently being configured by another administrative operation“的问题
  4. Unity 生成APK 出错的解决方法
  5. 在less中不能正常使用css3的calc属性的解决方法
  6. 几种常见的Windows 服务器无法联网/无法连接远程桌面等故障解决方案
  7. 如何确定C语言中数组的大小?
  8. android中上拉下滑布局,3年以上勿进!最简单的Android自定义ListView下拉刷新与上拉加载,代码直接拿去用~...
  9. python36安装opencv3.2_Python3.5.3下配置opencv3.2.0的操作方法
  10. 鸡兔同笼:不用暴力也可以