linux C学习笔记03--单链表
单链表一直是程序员的基础,我也来复习下,下面是link.c中的代码,供main.c 调用,代码很简单,单链表的插入,删除,查找和遍历输出,
#include <stdio.h>
#include <stdlib.h> typedef struct link{
int data;
struct link* next;
}*LINK; int insert_link(LINK* head,int data);
int print(LINK head);
int delete_node(LINK *head,int n);
int find_node(LINK head,int n); int insert_link(LINK* head,int data)
{
LINK node = (LINK)malloc(sizeof(struct link));
LINK tmp = NULL; if(node != NULL)
{
node->data = data;
node->next = NULL;
}
else
{
printf("malloc new node error!\n");
return -;
} if(*head == NULL)
{
*head = node;
return ;
} tmp = *head;
while(tmp->next != NULL) //find ending node
{
tmp = tmp->next;
}
tmp->next = node; return ;
} int print(LINK head)
{
LINK tmp = head;
while(tmp != NULL)
{
printf("%d \n",tmp->data);
tmp = tmp->next;
} return ;
} int delete_node(LINK *head,int n) //delete the node of index is n
{
LINK tmp = *head;
LINK save = tmp;
int i = ; if(n == )
{
tmp = tmp->next;
free(save);
*head = tmp;
return ;
} while(tmp != NULL)
{
if(i == n-)
{
save->next = tmp->next;
free(tmp);
break;
} save = tmp;
tmp = tmp->next;
i++;
} if(n- > i)
{
printf("error: delete %d is out of length\n",n);
return -;
} return ;
} int find_node(LINK head,int n)
{
LINK tmp = head;
int data = ;
int i = ; while(tmp != NULL)
{
if(i == n-)
{
data = tmp->data;
break;
}
tmp = tmp->next;
i++;
} if(n-1 > i)
{
printf("find_node error: out of link length\n");
return -;
} return data;
}
接着是main.c:
#include <stdio.h>
#include <stdlib.h> typedef struct link{
int data;
struct link* next;
}*LINK; extern int insert_link(LINK* head,int data);
extern int print(LINK head);
extern int delete_node(LINK *head,int n);
extern int find_node(LINK head,int n); int main(int argc,char* argv[])
{
LINK phead = NULL; insert_link(&phead,);
insert_link(&phead,);
insert_link(&phead,);
insert_link(&phead,);
insert_link(&phead,);
insert_link(&phead,); print(phead);
delete_node(&phead,); //delete the node by index
print(phead);
delete_node(&phead,); //delete the node by index
print(phead);
delete_node(&phead,); //delete the node by index
print(phead); printf("find node 6 is %d\n",find_node(phead,)); //finding the node by index return ;
}
linux C学习笔记03--单链表的更多相关文章
- linux 驱动学习笔记04--简单驱动
首先贴代码helloworld.c和Makefile /************************************************************************ ...
- linux 驱动学习笔记01--Linux 内核的编译
由于用的学习材料是<linux设备驱动开发详解(第二版)>,所以linux驱动学习笔记大部分文字描述来自于这本书,学习笔记系列用于自己学习理解的一种查阅和复习方式. #make confi ...
- Linux系统学习笔记:文件I/O
Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...
- Linux内核学习笔记-2.进程管理
原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- Linux内核学习笔记-1.简介和入门
原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- OpenCV 学习笔记03 findContours函数
opencv-python 4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...
- linux kernel学习笔记-5内存管理_转
void * kmalloc(size_t size, gfp_t gfp_mask); kmalloc()第一个参数是要分配的块的大小,第一个参数为分配标志,用于控制kmalloc()的行为. km ...
- 尚硅谷韩顺平Linux教程学习笔记
目录 尚硅谷韩顺平Linux教程学习笔记 写在前面 虚拟机 Linux目录结构 远程登录Linux系统 vi和vim编辑器 关机.重启和用户登录注销 用户管理 实用指令 组管理和权限管理 定时任务调度 ...
- C++ GUI Qt4学习笔记03
C++ GUI Qt4学习笔记03 qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...
- Redis:学习笔记-03
Redis:学习笔记-03 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 7. Redis配置文件 启动 ...
随机推荐
- Python 利用pytesser模块识别图像文字
使用的是python的pytesser模块,原先想做的是图片中文识别,搞了一段时间了,在中文的识别上还是有很多问题,这里做记录分享. pytesser,OCR in Python using the ...
- java web项目中 获取resource路径下的文件路径
public GetResource{ String path = GetResource.class.getClassLoader().getResource("xx/xx.txt&quo ...
- mySql-通过group by分组
当我们想查询主表和子表的信息时,我们首先会通过主表的id和子表中的主表id关联 如现有主表:tbl_enquire_price(询价表)和子表:tbl_enquire_price_detail(询价详 ...
- 初学Html
HTML,超文本标记语言,文本解释性语言,它的源代码不通过编译而直接在浏览器中运行时被翻译,其决定的是网页的结构和内容. 一谈html,自然首先是浏览器,比较具有代表性的浏览器则是谷歌.火狐.IE.苹 ...
- 【渗透测试学习平台】 web for pentester -4.XML
example1: http://192.168.91.139/xml/example1.php?xml=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%2 ...
- linux权限管理_文件特殊权限
一.SetUID功能 设定SetUID的方法 4代表SUID s代表SUID权限 S代表报错了,原因没有执行权限 # chmod 4755 文件名(最好用这种方法) # chmod u+s 文件名 取 ...
- tomcat切割日志的shell脚本
#!/bin/bash cd /usr/tomcats/ d=`date +%F` m1=`date -d'1 month ago' +%F` ` do cd tomcat808"$i&qu ...
- LeetCode【217. Contains Duplicate】
Given an array of integers, find if the array contains any duplicates. Your function should return t ...
- 论文笔记之:Dueling Network Architectures for Deep Reinforcement Learning
Dueling Network Architectures for Deep Reinforcement Learning ICML 2016 Best Paper 摘要:本文的贡献点主要是在 DQN ...
- Nginx 负载均衡学习
nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器. nginx负载均衡服务器 tomcat1服务器 tomcat2服务器 1.1 ...