- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告
课程名称: TCP/IP 协议栈分析与实现
学生姓名: 郭勇 专业: 信息工程
学号: 201005010718 同组学生姓名:无
实验地点 :6C601 指导老师: 刘飚
实验日期: 2013年3月25日
实验一:
实验项目名称: Linux 内核通用链表的使用
一、
实验目的和要求:
学习 Linux 内核的通用链表的设计原理,熟练掌握 Linux 内核通用链表的使用。
二、
实验内容
1. 掌握 Linux 通用链表的创建
2. 掌握通用链表增加元素、删除元素和遍历链表的方法。
三、
实验要求
1. 待创建的链表头变量名为 user_queue。
2. 作为链表的宿主节点类型定义如下:
struct user {
int id;/* user id */
struct list_head list;
}
3.
针对上述 user_queue 链表,
要求以队列方式向其中依次添加 10 个类型为 struct user
的宿主节点,并要求这 10 个宿主节点的 id 依次为 1-10
4. 依次遍历输出这 10 个宿主节点的 id
5. 从队列中删除首个宿主节点,然后依次遍历该队列并输出余下各宿主节点的 id 值
四、
实现原理
Linux 的内核源文件 list.h 提供了所有的链表定义、各类操作接口及其实现。其中
创建链表的方法如下:
LIST_HEAD(my_list);
内核源文件 list.h 中定义了以下若干接口,用于对通用链表进行各类操作:
1)
在指定的 head 后插入新节点,常用于堆栈数据结构的实现
// @new: 即将添加的新链表节点
// @head: 在此节点后添加
list_add(struct list_head *new, struct list_head *head);
2)
在指定的 head 前插入新节点,常用于队列数据结构的实现
// @new: 即将添加的新链表节点
// @head: 在此节点前添加
list_add_tail(struct list_head *new, struct list_head *head)
3)
从链表中删除一个指定节点
// @entry: 要从链表中删除的链表节点
list_del(struct list_head *entry)
4)
根据当前链表节点指针 ptr 获得宿主节点指针
// * @ptr:
struct list_head 类型的指针
// * @type: 链表节点所在的宿主节点的类型
// * @member: 嵌入宿主的链表节点的变量名
list_entry(ptr, type, member)
5)
遍历链表
// @pos: 遍历链表时用于指示正在遍历的链表节点的指针
// @head: 链表头
list_for_each(pos, head)
五、
实现代码和运行结果
#includestdio.h
#includestdlib.h
#include list.h
LIST_HEAD(user_quene);
struct user{
int id;/*user id*/
struct list_head list;
};
int main()
{
struct user uid[10];
struct list_head *pos;
int i;
for(i=0;i10;i++){
list_add_tail((uid[i].list),user_quene);
uid[i].id=i+1;
}
list_for_each(pos,user_quene)
printf(%d ,list_entry(pos,struct user,list)-id);
printf(\n);
list_del((uid[0].list));
list_for_each(pos,user_quene)
printf(%d ,list_entry(pos,struct user,list)-id);
printf(\n);
return 0;
}
实验二、
实验项目名称: Linux 内核通用哈希链表的使用
一、
实验目的和要求:
学习 Linux 内核的通用哈希链表的设计原理,
熟练掌握 Linux 内核通用哈希链表的使用。
二、
实验内容
1. 掌握 Linux 通用哈希链表的创建
2. 掌握通用哈希表增加元素、查找元素的方法。
三、
1.
实验要求
待创建的哈希表头数组为 struct hlist_head user_hash[16],要求对哈希表宿主元素的
name 成员的值进行散列,并将散列
您可能关注的文档
- 氮高效利用基因型大麦的物质生产及氮素积累特性_黄亿.pdf
- 汽车发展简史20100330.pdf
- 清华大学中国近现代政治文化考博真题参考书分数线.pdf
- 山东大学信息系统融合及IT治理的实践.pdf
- 第6章 误差理论及测量平差基础.pdf
- 第四节 消费理论.pdf
- 第五篇第一节大数定律.pdf
- 上海房市虹口区商品房销售套数附房地产百强企业九舍会智库.pdf
- 社区服务管理创新模式及路径选择.pdf
- 电气信息学院2012届团委 学生会工作计划 安徽工业.pdf
- 2025年鸡西市法院书记员招聘笔试考试题库及答案解析.docx
- 2025年吉林省街道办人员招聘笔试考试题库及答案解析.docx
- 2025年江苏省法院书记员招聘笔试考试题库及答案解析.docx
- 2025年克孜勒苏柯尔克孜市卫生健康系统事业单位人员招聘笔试考试题库及答案解析.docx
- 2025年来宾市交通运输系统事业单位人员招聘笔试考试题库及答案解析.docx
- 2025年吉林省法院书记员招聘笔试考试题库及答案解析.docx
- 2025年吉林省城管协管人员招聘笔试考试题库及答案解析.docx
- 2025年佳木斯市工会系统事业单位人员招聘笔试考试题库及答案解析.docx
- 2025年嘉峪关市街道办人员招聘笔试考试题库及答案解析.docx
- 2025年聊城市烟草系统事业单位人员招聘笔试考试题库及答案解析.docx
文档评论(0)