- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
成都理工大学TCPIP实验报告
本科生实验报告实验课程 计算机网络与TCP/IP协议体系(2)学院名称 信息科学与技术学院专业名称 通信工程学生姓名 杜立华 学生学号 201313070112 指导教师 刘飚 实验地点 6B603 实验成绩 二〇 一五 年 二 月 —— 二〇 一五 年 六 月实验一 Linux内核通用链表的使用 实验目的学习Linux内核通用链表的设计原理,熟练掌握Linux内核通用链表的使用。实验内容1、掌握Linux通用链表的创建2、掌握通用链表添加元素、删除元素和遍历链表的方法3、掌握通用链表的查找方法实验要求待创建的链表头变量名为user_queue。作为链表的宿主节点类型定义如下: struct user { int id; /* user id */ struct list_head list; };针对上述user_queue链表,要求以队列方式向其中依次添加10个类型为struct user的宿主节点,并要求这10个宿主节点的id依次为1—10依次遍历输出这10个宿主节点的id从链表中删除首个宿主节点,然后依次遍历该队列并输出余下各宿主节点的id在struct user结构体中增加一个username字段,用于存储该用户名字,重新以队列方式向其中依次添加10个类型为struct user的宿主节点,并要求这10个宿主节点的id依次为1—10在链表中搜索id值为5的节点,并输出该节点username值实现原理Linux的内核源文件list.h提供了所有的链表定义,以及各类链表的操作接口和实现。其中创建链表的方法如下:LIST_HEAD(my_list); 源文件list.h中定义了如下若干接口,用于对通用链表进行各种操作:在指定的head后插入新节点,常用于堆栈数据结构的实现// @newsk:即将添加的新链表节点// @head:在此节点后添加list_add(struct list_head *new, struct list_head *head); 在指定的head前插入新节点,常用于队列数据结构的实现// @newsk:即将添加的新链表节点// @head:在此节点前添加list_add_tail(struct list_head *new, struct list_head *head); 从链表中删除一个指定节点// @entry:要从链表中删除的节点list_del(struct list_head *entry); 根据当前链表节点指针ptr获得宿主节点指针// @ptr:struct list_head类型的指针// @type:链表节点所在的宿主节点的类型// @member:嵌入宿主的链表节点的变量名list_entry(ptr, type, member); 遍历链表// @pos:遍历链表时用于指示正在遍历的链表节点的指针// @head:链表头list_for_each(pos, head); 实现代码和运行结果请打印本实验的程序代码和程序运行截图,并作为附件附在本实验报告后。#include stdio.h#include malloc.h#include list.hstruct user{ int id; struct list_head list;};int main(void){ struct user *p; LIST_HEAD(user_queue); for (int i = 0; i 10; i++) { p = (struct user *)malloc(sizeof(struct user)); p-id = i; list_add_tail(p-list, user_queue); } struct list_head *q; list_for_each(q, user_queue) { p = list_entry(q, struct user, list); printf(%d\n, p-id); } return 0;}#include stdio.h#include malloc.h#include list.hstruct user{ char username[20]; int id; struct list_head list;};int main(void){ struct user *p; LIST_HEAD(head); for (int i; i 10; i++) { p = (struct user *)malloc(sizeof(struct user)); p-id = i + 1; printf(user %2d, Please input username: , i+1); scanf(%s
文档评论(0)