当前位置: 首页 > news >正文

网站编辑可以做运营吗发布外链

网站编辑可以做运营吗,发布外链,银川建设厅网站,如何做垂直网站我要成为嵌入式高手之3月20日数据结构第三天#xff01;#xff01; ———————————————————————————— 双向链表 双向链表与单向链表的区别#xff1a;双向链表中的结点的指针域包含前驱结点的地址#xff0c;而单向链表的结点中指针域只有后驱结…我要成为嵌入式高手之3月20日数据结构第三天 ———————————————————————————— 双向链表 双向链表与单向链表的区别双向链表中的结点的指针域包含前驱结点的地址而单向链表的结点中指针域只有后驱结点的地址。 双向链表操作前驱结点比单向链表方便单向链表若是要操作前驱结点就始终要用一个指针指向前驱结点否则很容易丢失前驱结点地址就要重新进行遍历。 1、创建链表 TWO_LIST *CreateLink() {TWO_LIST *plist malloc(sizeof(TWO_LIST));if (NULL plist){perror(fail to malloc list);return NULL;}plist-phead NULL;plist-clen 0;return plist; }2、创建结点 TWO_NODE *CreateNode(DATA_STU data) {TWO_NODE *pnode malloc(sizeof(TWO_NODE));if (NULL pnode){perror(fail to malloc node);return NULL;}pnode-data data;pnode-ppre NULL;pnode-pnext NULL;return pnode; }3、头插 int PushHeadNode(TWO_LIST *plist, TWO_NODE *pnode) {if (pnode NULL || plist NULL){return -1;}if (plist-phead NULL){plist-phead pnode;}else{pnode-pnext plist-phead;plist-phead-ppre pnode;plist-phead pnode;}plist-clen;return 0; }4、尾插 int PushTailNode(TWO_LIST *plist, TWO_NODE *pnode) {TWO_NODE *ptmp NULL;if (pnode NULL || plist NULL){return -1;}if (plist-phead NULL){plist-phead pnode;}else{ptmp plist-phead;while (ptmp-pnext ! NULL){ptmp ptmp-pnext;}ptmp-pnext pnode;pnode-ppre ptmp;}plist-clen;return 0; }5、从头遍历 int SearchHeadAll(TWO_LIST *plist) {TWO_NODE *ptmp plist-phead;if (plist-phead NULL){printf(NO NODE!\n);return -1;}else{while (ptmp ! NULL){printf(StuInfo:\nid %d; name %s; score %d.\n, ptmp-data.id, ptmp-data.name, ptmp-data.score);ptmp ptmp-pnext;}}printf(len %d\n, plist-clen);return 0; }6、从尾遍历 int SearchTailAll(TWO_LIST *plist) {TWO_NODE *ptmp plist-phead;if (plist-phead NULL){printf(NO NODE!\n);return -1;}else{while (ptmp-pnext ! NULL){ptmp ptmp-pnext;}while (ptmp ! NULL){printf(StuInfo:\nid %d; name %s; score %d.\n, ptmp-data.id, ptmp-data.name, ptmp-data.score);ptmp ptmp-ppre;}}printf(len %d\n, plist-clen);return 0; }7、查找 TWO_NODE *SearchInLink(TWO_LIST *plist, int id) {TWO_NODE *dest plist-phead;while (dest ! NULL){if (dest-data.id ! id){dest dest-pnext;}else{return dest;}}return NULL; } 8、修改 int ChangeInLink(TWO_LIST *plist, int uid, DATA_STU sdata) {TWO_NODE *ptmp plist-phead;while (ptmp ! NULL){if (ptmp-data.id ! uid){ptmp ptmp-pnext;}else{ptmp-data sdata;return 1;}}return -1; }9、头删 int PopHeadLink(TWO_LIST *plist) {TWO_NODE *pfree plist-phead;if (NULL plist-phead){return -1;}else{pfree-pnext-ppre NULL;plist-phead pfree-pnext;free(pfree);plist-clen--;}return 0; }10、尾删 int PopTailLink(TWO_LIST *plist) {TWO_NODE *pfree plist-phead;if (NULL plist-phead){return -1;}else if (NULL plist-phead-pnext){free(pfree);}else{while (pfree-pnext ! NULL){pfree pfree-pnext;}pfree-ppre-pnext NULL;free(pfree);}plist-clen--;return 0; } 11、销毁 int DestroyLink(TWO_LIST *plist) {TWO_NODE *pfree NULL;TWO_NODE *ptmp plist-phead;if (NULL plist-phead){free(plist);}else{while (NULL ! ptmp){pfree ptmp;ptmp ptmp-pnext;plist-phead ptmp;free(pfree);}free(plist);}return 0; }完整代码 头文件 #ifndef _LINK_H_ #define _LINK_H_#include stdio.h #include stdlib.h/* 存储的数据类型 */ typedef struct stu {int id;char name[32];int score; }DATA_STU;/* 链表的结点类型 */ typedef struct node {DATA_STU data; //数据域struct node *pnext; //后驱结点struct node *ppre; //前驱结点 }TWO_NODE;/* 描述链表属性的标签类型 */ typedef struct list {TWO_NODE *phead; //存储头结点地址的指针int clen; //链表中当前结点个数 }TWO_LIST;extern TWO_LIST *CreateLink(); extern TWO_NODE *CreateNode(DATA_STU data); extern int PushHeadNode(TWO_LIST *plist, TWO_NODE *pnode); extern int SearchHeadAll(TWO_LIST *plist); extern int SearchTailAll(TWO_LIST *plist); extern int PushTailNode(TWO_LIST *plist, TWO_NODE *pnode); extern TWO_NODE *SearchInLink(TWO_LIST *plist, int id); extern int ChangeInLink(TWO_LIST *plist, int uid, DATA_STU sdata); extern int PopHeadLink(TWO_LIST *plist); extern int PopTailLink(TWO_LIST *plist); extern int DestroyLink(TWO_LIST *plist);#endif功能函数文件 #include head.hTWO_LIST *CreateLink() {TWO_LIST *plist malloc(sizeof(TWO_LIST));if (NULL plist){perror(fail to malloc list);return NULL;}plist-phead NULL;plist-clen 0;return plist; }TWO_NODE *CreateNode(DATA_STU data) {TWO_NODE *pnode malloc(sizeof(TWO_NODE));if (NULL pnode){perror(fail to malloc node);return NULL;}pnode-data data;pnode-ppre NULL;pnode-pnext NULL;return pnode; }int PushHeadNode(TWO_LIST *plist, TWO_NODE *pnode) {if (pnode NULL || plist NULL){return -1;}if (plist-phead NULL){plist-phead pnode;}else{pnode-pnext plist-phead;plist-phead-ppre pnode;plist-phead pnode;}plist-clen;return 0; }int SearchHeadAll(TWO_LIST *plist) {TWO_NODE *ptmp plist-phead;if (plist-phead NULL){printf(NO NODE!\n);return -1;}else{while (ptmp ! NULL){printf(StuInfo:\nid %d; name %s; score %d.\n, ptmp-data.id, ptmp-data.name, ptmp-data.score);ptmp ptmp-pnext;}}printf(len %d\n, plist-clen);return 0; }int SearchTailAll(TWO_LIST *plist) {TWO_NODE *ptmp plist-phead;if (plist-phead NULL){printf(NO NODE!\n);return -1;}else{while (ptmp-pnext ! NULL){ptmp ptmp-pnext;}while (ptmp ! NULL){printf(StuInfo:\nid %d; name %s; score %d.\n, ptmp-data.id, ptmp-data.name, ptmp-data.score);ptmp ptmp-ppre;}}printf(len %d\n, plist-clen);return 0; }int PushTailNode(TWO_LIST *plist, TWO_NODE *pnode) {TWO_NODE *ptmp NULL;if (pnode NULL || plist NULL){return -1;}if (plist-phead NULL){plist-phead pnode;}else{ptmp plist-phead;while (ptmp-pnext ! NULL){ptmp ptmp-pnext;}ptmp-pnext pnode;pnode-ppre ptmp;}plist-clen;return 0; }TWO_NODE *SearchInLink(TWO_LIST *plist, int id) {TWO_NODE *dest plist-phead;while (dest ! NULL){if (dest-data.id ! id){dest dest-pnext;}else{return dest;}}return NULL; }int ChangeInLink(TWO_LIST *plist, int uid, DATA_STU sdata) {TWO_NODE *ptmp plist-phead;while (ptmp ! NULL){if (ptmp-data.id ! uid){ptmp ptmp-pnext;}else{ptmp-data sdata;return 1;}}return -1; }int PopHeadLink(TWO_LIST *plist) {TWO_NODE *pfree plist-phead;if (NULL plist-phead){return -1;}else{pfree-pnext-ppre NULL;plist-phead pfree-pnext;free(pfree);plist-clen--;}return 0; }int PopTailLink(TWO_LIST *plist) {TWO_NODE *pfree plist-phead;if (NULL plist-phead){return -1;}else if (NULL plist-phead-pnext){free(pfree);}else{while (pfree-pnext ! NULL){pfree pfree-pnext;}pfree-ppre-pnext NULL;free(pfree);}plist-clen--;return 0; }int DestroyLink(TWO_LIST *plist) {TWO_NODE *pfree NULL;TWO_NODE *ptmp plist-phead;if (NULL plist-phead){free(plist);}else{while (NULL ! ptmp){pfree ptmp;ptmp ptmp-pnext;plist-phead ptmp;free(pfree);}free(plist);}return 0; }主函数文件 #include head.hint main(void) {TWO_LIST *plist NULL;TWO_NODE *pnode NULL;int i 0;int uid 0;/* 创建双向链表 */plist CreateLink();if (NULL plist){perror(fail to CreateLink);return -1;}/* 初始化要插入结点的数据 */DATA_STU data[5] {{1, zhangsan, 99},{2, lisi, 98},{3, wangwu, 97},{4, aaaaa, 96},{5, bbbbb, 95},};DATA_STU data1[5] {{6, zhangsan, 99},{7, lisi, 98},{8, wangwu, 97},{9, aaaaa, 96},{10, bbbbb, 95},};/* 创建头插结点并头插 */for (i 0; i 5; i){pnode CreateNode(data[i]);if (NULL pnode){perror(fail to CreateNode);return -1;}PushHeadNode(plist, pnode);} #if 0/* 从头遍历、从尾遍历*/SearchHeadAll(plist);printf(\n);SearchTailAll(plist);printf(TAIL\n); #endif/* 创建尾插结点并尾插 */for (i 0; i 5; i){pnode CreateNode(data1[i]);if (NULL pnode){perror(fail to CreateNode);return -1;}PushTailNode(plist, pnode);} #if 0/* 双向遍历 */SearchHeadAll(plist);printf(\n);SearchTailAll(plist); #endif #if 0/* 查找对应id号的学生信息 */printf(\n);printf(Input stu id to search:\n);scanf(%d, uid);TWO_NODE *dest SearchInLink(plist, uid);if (NULL dest){printf(NO STUDENT!\n);}else{printf(The Dest StuInfo:\nid %d; name %s; score %d.\n, dest-data.id, dest-data.name, dest-data.score);}#endif#if 0/* 修改对应id号的学生信息 */DATA_STU sdata {0};printf(\n);printf(Input stu id to change:\n);scanf(%d, sdata.id);printf(Input stu info to change:\nname:);scanf(%s, sdata.name);printf(score:);scanf(%d, sdata.score);putchar(\n);ChangeInLink(plist, sdata.id, sdata);SearchHeadAll(plist); #endif #if 0/* 头删 */SearchHeadAll(plist);printf(\n);PopHeadLink(plist);SearchHeadAll(plist); #endif #if 0/* 尾删 */SearchHeadAll(plist);printf(\n);PopTailLink(plist);PopTailLink(plist);PopTailLink(plist);PopTailLink(plist);SearchHeadAll(plist); #endif #if 1/* 销毁 */SearchHeadAll(plist);printf(\n);SearchTailAll(plist);DestroyLink(plist);#endifreturn 0; }Makefile文件 all:doulinkdoulink:main.c twolink.cgcc $^ -o $.PHONY: clean:rm doulink; 作业 12、删除双向链表指定结点 int DeleteIdNode(TWO_LIST *plist, int uid) {TWO_NODE *dest plist-phead;while (dest ! NULL){if (dest-data.id ! uid){dest dest-pnext;}else{dest-ppre-pnext dest-pnext;dest-pnext-ppre dest-ppre;free(dest);plist-clen--;}}return 0; } 13、双向链表倒置 int ReverseTwoLink(TWO_LIST *plist) {TWO_NODE *ptmp plist-phead;TWO_NODE *pver NULL;struct node *p NULL;if (plist-phead NULL || plist-phead-pnext NULL){return -1;}while (ptmp-pnext ! NULL){ptmp ptmp-pnext;}plist-phead ptmp;while (ptmp ! NULL){pver ptmp;ptmp ptmp-ppre;p pver-pnext;pver-pnext pver-ppre;pver-ppre p;}return 0; }
http://www.zqtcl.cn/news/465324/

相关文章:

  • 小型企业网站设计教程深圳seo网站推广方案
  • 做视频网站怎么备案最新网站架构
  • 黄金网站app软件下载安装免费淘宝网页版登录
  • 幸运28网站建设网站返回指定位置怎么做
  • 建设个直播网站要多少钱兴业大街网站建设
  • 网站设计培训班创业上海今天新闻发布会直播
  • 电商网站制作设计wordpress jquery 无法
  • 关键词优化易下拉效率北京和隆优化科技
  • 漯河企业网站开发天津建设协会网站
  • wap网站模式房产信息查询网
  • 做外贸怎么进入国外的网站百度指数总结
  • ui设计作品网站东莞做网站的网络公司
  • 网站未备案怎么访问做网站图片教程
  • 温州专业营销网站建设网络建设解决方案
  • 滨州网站建设 远洋科技网站需求建设书
  • 知道网站域名怎么联系域名解析不成功是什么意思
  • 武宁网站ui专业设计wordpress评论通知代码6
  • thymeleaf做网站 seo重庆平台网站建设找哪家
  • WordPress子站站群建筑工程网上申请质量安全监督
  • 怎么给网站添加图标山西手机版建站系统哪家好
  • frontpage网页制作视频教程昆明网站建设优化企业
  • 工信部 诚信网站备案公司网络营销方案
  • 网站开发采集工具如何做网站内链优化
  • 在线做英语题的网站揭阳建站服务
  • 网站非法篡改wordpress的知名网站
  • 保定网建站模板uv推广平台
  • 股权分配系统建设网站wordpress mip 模板
  • 网站及其建设的心得体会昆明云南微网站
  • 详情页在线设计网站推荐广州建设网站企业
  • 设计师网站建设哪家网络公司做网站