链表常见操作-嵌入式C语言
来源:互联网 发布:java教学视频百度云 编辑:程序博客网 时间:2024/05/17 01:05
嵌入式笔记
1.单链表组织与存储
2单链表常见操作
(1)初始化
(2)查询第i个数据,并放回data区域
1.单链表组织与存储
typedef struct _link_node{ elem_type data; struct _link_node *next;} link_node , *link_list;
2单链表常见操作
(1)初始化
int init_link(link_list *list) //注意,这里是指针的指针,相当于**link_node,实际含义是存放link_node指针的指针 { *list= (link_list)malloc(sizeof(link_node)); //*list是一个link_node指针。即分配一个link_node大小的空间给*list指针。 if(!list) { return -1; } memset(&((*list)->data),0,sizeof(elem_type)); //初始化data段的内存空间,第一个参数必须是指针,因此用&取址}
(2)查询第i个数据,并放回data区域
int init_link(link_list *list) //注意,这里是指针的指针,相当于**link_node,实际含义是存放指针的链表的指针 { *list= (link_list)malloc(sizeof(link_node)); //*list是一个link_node指针。即分配一个link_node大小的空间给*list指针。 if(!list) { return -1; } memset(&((*list)->data),0,sizeof(elem_type)); //初始化data段的内存空间,第一个参数必须是指针,因此用&取址}
(3)合并两个链表(根据id大小)。输入链表头list_a,list_b,返回链表头list_c。
int merge(link_node list_a,link_node list_b, link_node list_c){ link_list pa,pb,pc; //虽然有表头list_a,list_b,list_c,但运算过程中还是需要元素指针 pa = list_a->next; pb = list_b->next; //链表头本身没数据,next才是下一个元素。 list_c = pc = list_a; while(pa && pb) //pa和pb存在,才循环运算 { if(pa->data < pb->data) { pc->next = pa; //把pa添加到list_c中。注意。pc最开始和list_c是同一个头,所以pc所指的next链表,也是所指向list_c的。 pc = pa; //移动pc上的指针到新的指针:pa位置上 pa = pa->next; //移动指向list_a的指针 } else { pc->next = pb; pc = pb; pb = pb->next; } } //pa或pb某一指针指向链尾,为NULL,则把还没到尾的那个练表直接连接到list_c结尾 pc->next = pa?pa:pb;}
0 0
- 链表常见操作-嵌入式C语言
- C语言链表常见基本操作
- 嵌入式C语言常见面试题分析
- C语言单链表常见操作
- C语言字符串常见操作
- C语言常见文件操作
- C语言常见操作符
- C语言嵌入式编程之:内存操作
- 嵌入式C语言之屏幕操作
- c 语言嵌入式之:内存操作
- 嵌入式系统C语言常用位操作
- 嵌入式C语言之内存操作
- C语言——静态顺序表常见操作
- C语言--链表的常见操作(在DVE-C++编译运行通过)
- 嵌入式C语言常见的16道面试题
- 嵌入式开发中常见3个的C语言技巧
- C语言字符串操作常见函数
- C语言单链表常见操作系列
- Linux 有趣命令
- Cocos2dx之http网络请求
- VxWorks下使用帮助help出错
- Scrapy webkit 获取js代码执行结果后再抓取
- SVN的几个菜单
- 链表常见操作-嵌入式C语言
- ExtJs4 笔记(4) Ext.Ajax 对ajax的支持
- 【C/C++】堆和栈的区别
- 历届博客之星获奖博客分享
- 数组
- ExtJs4 笔记(5) Ext.Button 按钮
- 让win xp 有密码的网络访问
- 数据库操作
- Servlet中转发和重定向的路径问题以及表单提交路径问题