用c写的练习簿

  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <string>
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include <Windows.h>
  7. using namespace std;
  8. typedef struct data
  9. {
  10. struct data *next;
  11. struct data *prior;
  12. string name;
  13. long long num;
  14. string sex;
  15. data()
  16. {
  17. next = NULL;
  18. prior = NULL;
  19. name = "NULL";
  20. num = -1;
  21. sex = "NULL";
  22. }
  23. }list;
  24. #define Len sizeof(list)
  25. list* search(list *tp);
  26. list* creatList()
  27. {
  28. list* tp = new list;
  29. tp->prior = tp;
  30. tp->next = tp;
  31. return tp;
  32. }
  33. void clearList(list *tp)
  34. {
  35. while(tp->name != "NULL" && tp->num != -1 && tp->sex != "NULL")
  36. tp = tp->next;
  37. list* head = tp;
  38. tp = tp->next;
  39. while(head->next->name != "NULL" && head->next->num != -1 && head->next->sex != "NULL")
  40. {
  41. head->next = tp->next;
  42. free(tp);
  43. tp = head->next;
  44. }
  45. head->prior = head;
  46. cout << "Contract Empty" << endl;
  47. }
  48. void destoryList(list *tp)
  49. {
  50. clearList(tp);
  51. free(tp);
  52. }
  53. void insert(list *tp, list *tep)
  54. {
  55. tep->next = tp->next;
  56. tep->prior = tp;
  57. tp->next->prior = tep;
  58. tp->next = tep;
  59. }
  60. list* makeNode()
  61. {
  62. list* tp = new list;
  63. cout << "please input name, sex, num : ";
  64. cin >> tp->name >> tp->sex >> tp->num;
  65. return tp;
  66. }
  67. void delNode(list *tp)
  68. {
  69. cout << "Delete element : ";
  70. if(!search(tp)) cout << "The element which you want to delete is not exist" << endl;
  71. else
  72. {
  73. tp->prior->next = tp->next;
  74. tp->next->prior = tp->prior;
  75. free(tp);
  76. }
  77. }
  78. list* search(list *tp)
  79. {
  80. string str;
  81. cout << "please input the key style (include name,num) : ";
  82. cin >> str;
  83. list* head = tp;
  84. if(str == "name")
  85. {
  86. cout << "please input which name you want to search : ";
  87. cin >> str;
  88. tp = tp->next;
  89. while(tp->name != str && tp != head)
  90. tp = tp->next;
  91. if(tp->name != str)
  92. return NULL;
  93. else
  94. return tp;
  95. }
  96. else if(str == "num")
  97. {
  98. long long num;
  99. cout << "please input which number you want to search : ";
  100. cin >> num;
  101. tp = tp->next;
  102. while(tp->num != num && tp != head)
  103. tp = tp->next;
  104. if(tp->num != num)
  105. return NULL;
  106. else return tp;
  107. }
  108. else
  109. return NULL;
  110. }
  111. void modify(list *head)
  112. {
  113. cout << "Modify elemtion : ";
  114. list *tp = search(head);
  115. if(!tp) cout << "the key can‘t find in the list" << endl;
  116. else
  117. {
  118. cout << "the elemtion which you want modify is " << tp->name << ‘ ‘ << tp->sex << ‘ ‘ << tp->num << endl;
  119. cout << "please input key what you want to modify :" << endl << "1. name" << endl << "2. sex" << endl << "3. num" << endl;
  120. int key;
  121. L:
  122. cin >> key;
  123. if(key == 1)
  124. {
  125. cout << "please input name : ";
  126. cin >> tp->name;
  127. }
  128. else if(key ==2)
  129. {
  130. cout << "please input sex : ";
  131. cin >> tp->sex;
  132. }
  133. else if(key == 3)
  134. {
  135. cout << "please input num : ";
  136. cin >> tp->num;
  137. }
  138. else
  139. {
  140. cout << "Input error , please input again :";
  141. goto L;
  142. }
  143. }
  144. cout << "the elemtion which you modify is " << tp->name << ‘ ‘ << tp->sex << ‘ ‘ << tp->num << endl;
  145. }
  146. void print(list *tp)
  147. {
  148. list* head = tp;
  149. tp = tp->next;
  150. while(tp!= head)
  151. {
  152. if(tp->name != "NULL" && tp->sex != "NULL" && tp->num != -1)
  153. cout << tp->name << ‘ ‘ << tp->sex << ‘ ‘ << tp->num << endl;
  154. tp = tp->next;
  155. }
  156. if(head->name != "NULL" && head->sex != "NULL" && head->num != -1)
  157. cout << head->name << ‘ ‘ << head->sex << ‘ ‘ << head->num << endl;
  158. }
  159. int main()
  160. {
  161. printf("\t\t\t\tThe Contract List\n\n");
  162. system("color a");
  163. list* head = creatList();
  164. cout << "please select which operate you want to do :" << endl;
  165. cout << "1. Insert" << endl << "2. Search " << endl << "3. Delete" << endl << "4. Modify" << endl
  166. << "5. Print all elemtion" << endl << "6. Empty contract"<< endl <<"0. Exit" << endl;
  167. cout << "_____________________________________________________________________________" << endl;
  168. //system("color b");
  169. int key;
  170. while(cin >> key && key != 0)
  171. {
  172. if(key == 1)
  173. {
  174. list*a =makeNode();
  175. insert(head, a);
  176. }
  177. else if(key == 2)
  178. {
  179. A:
  180. list *b = search(head);
  181. if(!b)
  182. {
  183. cout << "the key you input is not exist in element , please input again" << endl;
  184. goto A;
  185. }
  186. else
  187. cout << "The element is :" << b->name << ‘ ‘ << b->sex << ‘ ‘ << b->num << endl;
  188. }
  189. else if(key == 3)
  190. {
  191. delNode(head);
  192. }
  193. else if(key == 4)
  194. {
  195. modify(head);
  196. }
  197. else if(key == 5)
  198. {
  199. print(head);
  200. }
  201. else if(key == 6)
  202. clearList(head);
  203. else
  204. cout << "Input Error" << endl;
  205. }
  206. destoryList(head);
  207. return 0;
  208. }

来自为知笔记(Wiz)

附件列表

时间: 2024-10-11 21:01:29

用c写的练习簿的相关文章

Python:hashlib加密模块,flask模块写登录接口

hashlib模块 主要用于加密相关的操作,(比如说加密字符串)在python3的版本里,代替了md5和sha模块,主要提供 sha1, sha224, sha256, sha384, sha512 ,md5 这些加密方式 import  hashlib m = hashlib.md5()   #用md5加密的方式(md5加密后无法解密),创建一个md5的对象 m.update(b"Hello")  #b代表二进制字节bytes,把字符串hello转成字节,然后加密:用b给一个变量转换

三行写出莫比乌斯函数(HDU1695)

莫比乌斯函数是可以在三行内写出来的 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=1000000; 5 int mu[maxn+10],T; 6 void Mobius(){ 7 for(int d=1,k;d<=maxn;++d) 8 for(mu[1]=1,k=d<<1;k<=maxn;mu[k]=mu[k]-mu[d],k+=d);

在windows 下使用eclipse进行编译和烧写

eclipse IDE是一款开源的前端编程软件,它提供了编写,编译和调试ESP-IDF项目的图形集成开发环境. 首先在https://www.obeo.fr/en/eclipse-download?INSTALLER-WIN64中选择需要的对应位数的eclipse. 然后在http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载eclipse运行所需的java环境. 在安装是选择 点

昨天没写今天补上

恩因为今天要考试所以昨天晚上在复习,没来得及写,现在补上. 昨天依旧是循环,被虐了整整一天! 到现在仍然不知道for里的循环体怎么写.... 感到人生无望...(不想说什么了粘题吧) p1032;#include〈iostream〉 using namespace std; int main () { long long a,b=0,c,d,sum=0; cin>>a; while (a>0) { d=a/10; sum++; for(int i=1;i<=sum;i++) { c

.net 自己写的操作Excel 导入导出 类(以供大家参考和自己查阅)

由于现在网页很多都关系到Excel 的操作问题,其中数据的导入导出更是频繁,作为一个菜鸟,收集网上零散的知识,自己整合,写了一个Excel导入到GridView ,以及将GridView的数据导出到EXCEL的类方法,以供参考和方便自己以后查阅. 1 #region 引用部分 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Web; 6 using System.Dat

架构师写给工程师的一封信(很有价值)【转】

下面的邮件是某Architect发给他的Engineering团队的(来源),我觉得挺不错的,翻译过来,我相信我们所有的程序员都能从中学到很多东西.下面是这封邮件-- 每次当我开始做新的东西是我就会很兴奋.就算在软件圈里做了20年以后,每当开始新的旅程里,我都觉得我心中有一些东西不吐不快.这是我们大家一起的旅程.我强烈地相信我们详细规划的过程是很有乐趣的,富有挑战的和丰富多彩的.我想让这个旅程让你们难忘,并且能增添你们所有人的阅历. 这看起来有些唯心主义,不过,我想制订我的工作日程,我们的技术策

一个缓存容灾写的样例

背景 有时我们能够使用缓存进行容灾的处理.场景例如以下:我们当前有一个专门提供各种数据的应用DataCore,该应用开放多个RFC方法供其它应用使用.      我们平时在读写数据时,会在Cache备份一份(为平时DataCore提高响应速度.减少DB.CPU压力所用),当DB挂掉的时候.Cache还能够用来容灾.使用缓存容灾的优点是:性能足够好,坏处是缓存可比数据库成本高多了. 让我们想象得更猛烈些,当DataCore整个挂掉的时候,A.B.C.D方怎么才干安然的执行下去? 我们能够在A.B.

Mysql占用大量写I/O

早上收到zabbix告警,发现某台存放监控数据的数据库主机CPU的IOwait较高,一直持续较长时间. 登录服务器查看磁盘IO发现队列高达90%多,而且经常反复如此 通过iotop查看发现占用io较大的进程是mysql 登录mysql查看show processlist,发现基本上每次io队列较高时都是在insert时,以为是插入语句有问题,于是打开mysql慢查询日志,观察一段时间磁盘io仍然较高,但是发现并没有任何慢查询语句: 查找关于mysql IO问题优化资料,<[转载]sync_bin

自写原生jq滚轮插件

自己仿bootStarp插件写的,思路局限,仅供交流,有好的建议还请不吝赐教//使用方法:                //html:需要ul>li>a的模式,a需要类名,需要设置page-scroll属性,page-scroll属性需要1以数字结尾,容器为所变化的最大页面                //js:请传入一个事件对象,对象需要传入属性:pageAnchorName(锚点id)及contianer(容器类)                //下标jq对象传入$navIndex属