- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章结构体与共用体位运算
循环链表的应用 反约瑟夫(Joseph)问题 著名的约瑟夫问题是这样描述的:N个人排成一个圆圈,然后把这N个人按逆时针方向编号为1、2、…、N;有一个正整数M,然后从编号为1的人开始按逆时针计数,当某人计数为M的倍数时,该人出队;如此循环下去,直到队列里只有一个人留下。 你现在的任务是:对于N和K,其中N为初始时约瑟夫圆圈中的人数,K为约瑟夫问题中最后留下的人的编号;请你确定一个最小能发生这种结果的正整数M。 例:N=10,K=4 M=3 提示:枚举法(穷举法) 共用体 共用体(联合体) 所有成员共享一片存储区 每个时刻只能保存共用体的一个成员 union data { int n; double x; char c; }; c的存储位置和范围 n的存储位置和范围 x的存储位置和范围 枚举 定义枚举类型 enmu 枚举类型名{枚举常量名,… }; 枚举常量名: 可以自动设置值的符号常量 enum week{Sun,Mon,Tues,Wed,Thu,Fri,Sat}; enum week{Mon=1,Tues,Wed,Thu,Fri,Sat,Sun}; 定义枚举变量 enmu week a; for(a=Mon;a=Fri;a= (enmu week) (a+1)) if(a==Tue) printf(“%s,上机”,”Tue”); 任务10.4 加密与解密 加密与解密 要求:互逆 算术运算: 位运算: 编译、连接code.cpp后,在DOS交互状态下运行 位运算 以二进制数形式输出 加密:c=c+key; 解密:c=c-key; 加密:c=c^key; 解密:c=c^key; 加密: code code.cpp magic 解密: code magic orginal 程序实现 按位运算符 按位运算符用于处理整数 char, short, int , long, unsign 位运算符 操 作 按位与 | 按位或 ^ 按位异或 ~ 按位取反 右移 左移 以二进制数形式输出 unsigned x=10 unsigned mask=131 c= x mask ? ’1’ : ’0’ mask= mask1 ; x 0 0 0…0 0 0 0 0 1 0 1 0 31 30 … … 7 6 5 4 3 2 1 0 mask 0 0 0…0 0 0 0 0 0 0 0 0 0 0…0 0 0 0 0 0 0 0 0 0 0…0 0 0 0 0 0 0 0 0 1 0 0 0…0 0 0 0 0 0 0 0 0 0 0…0 0 0 0 0 0 0 0 0 0 0…0 0 0 0 0 0 0 0 0 0 0…0 0 0 0 0 0 0 0 0 0 0…0 0 0 0 0 0 0 0 x mask mask1 程序实现 小结 自引用结构: struct node { struct book data; struct node *next; }; 动态内存分配:在内存保留一块空间,并在程序运行的整个过程中保存数据 struct node *pnew; pnew=(struct node *)malloc(sizeof(struct node)); free(pnew); 链表:大小能根据需要增加或减少的动态数据结构 Head:永远指向链表的第一个结点 尾节点: p-next==NULL 通过对指针重新赋值来实现数据的插入和删除 形成好习惯:在创建链表时申请内存空间; 在程序结束前释放所有链表节点,并使Head==NULL 尾插法创建链表 (Head, pnew, prear) if( Head==NULL ) Head=pnew; else prear=pnew; prear=pnew; 链表遍历 (Head, p) while( p!=NULL ) { //输出p p = p-next; } 顺序插入链表结点 ( Head, pnew, pre, suc ) //循环:查找插入位置:pre后,suc前 pnew-next = suc; pre-next = pnew; 删除链表结点 (Head, p, pre) //循环:查找删除结点pre为p的前驱 pre-next = p-next; free(p); 头指针的传递 全局变量 传值 : struct node *carete(struct node *Head); 传地址: void create(struct node **Head); 循环链表:tail-next == Head; 高级语言程序设计 2007.3 – 2007.7 云南师大计信学院 解敏 xmin7186@ 第10章 结构体
您可能关注的文档
最近下载
- 2025年电源管理芯片产业分析报告.pdf VIP
- 预防呼吸机相关肺炎的集束化管理策略课件.pptx VIP
- 【高三上】江淮十校2026届高三第一次联考语文试题含答案.docx
- 北京市海淀区2024-2025学年七年级上学期期末英语试题(含答案与解析).pdf VIP
- 2023年IATF16949汽车质量管理体系程序文件汇编(内含39个程序以及质量手册).docx VIP
- 关务风险管理.pptx VIP
- (2025秋新版)人教版八年级英语上册《Unit 4 Amazing Plants and Animals》PPT课件.pptx
- 2025年必威体育精装版征信报告可编辑模版1.pdf
- {工作手册}物资编码手册.pdf VIP
- 食品厂产品留样制.doc VIP
文档评论(0)