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

杭州做网站电话战队头像logo设计

杭州做网站电话,战队头像logo设计,网站建设成都创新互联,今天重大新闻头条新闻国际新闻这个链表是带有表头的双链表。实现链表的一些规范操作#xff0c;初始化#xff0c;插入#xff0c;删除等。包括两个头文件list.h#xff0c;fatal.h#xff0c;库函数list.c#xff0c;测试函数testlist.c。头文件放的都是函数声明#xff0c;库函数list.c放的的函数的… 这个链表是带有表头的双链表。实现链表的一些规范操作初始化插入删除等。包括两个头文件list.hfatal.h库函数list.c测试函数testlist.c。头文件放的都是函数声明库函数list.c放的的函数的定义。 头文件list.h 1 typedef int ElementType;2 #ifndef _List_H3 struct Node;4 typedef struct Node *PtrToNode;5 typedef PtrToNode List;6 typedef PtrToNode Position;7 #includestdbool.h8 List MakeEmpty(List L);9 void DeleteList(List L); 10 bool IsEmpty(List L); 11 bool IsLast(Position P, List L); 12 Position Find(ElementType X, List L); 13 void Delete(ElementType X, List L); 14 void Insert(ElementType X, List L,Position P); 15 Position Header(List L); 16 Position First(List L); 17 Position Advance(Position P); 18 Position Front(Position P); 19 ElementType Retrieve(Position P); 20 void PrintList(const List L); 21 void PrintLots(List L, List P); 22 void SwapWithNext(Position P, List L); 23 void SwapWithNoNext(Position P1,Position P2, List L); 24 List IntersectList(List L, List P); 25 List UnionList(Position L, Position P); 26 #endif // !_List_H 头文件fatal.h 1 #includestdio.h 2 #includestdlib.h 3 #define Error(Str) FatalError(Str) 4 #define FatalError(Str) fprintf(stderr,%s\n,Str),exit(1);  库函数list.c //引用头文件 #include list.h #includestdlib.h #include fatal.h//结构体定义一个前指针Pre和一个后指针Next struct Node {ElementType Element;Position Next;Position Prev; };//初始化链表 List MakeEmpty(List L) {if (L ! NULL)DeleteList(L);L malloc(sizeof(struct Node));if (L NULL)FatalError(Out of memory!);L-Next NULL;L-Prev L;return L; }//删除链表 void DeleteList(List L) {Position P, Temp;P L-Next;L-Next NULL;while (P ! NULL){Temp P-Next;free(P);P Temp;} }//判断链表是否为空 bool IsEmpty(List L) {return L-Next NULL; }//判断当前指针P是否指向链表最后一个元素 bool IsLast(Position P, List L) {return P-Next NULL; }//在链表中找元素X如果返回是NULL说明没找到 Position Find(ElementType X, List L) {Position P;P L-Next;while (P ! NULL P-Element ! X)P P-Next;return P; }//删除链表中的元素X若返回NULL说明在链表中没找到元素X void Delete(ElementType X, List L) {Position P;P Find(X, L);//if PNULL说明没找到if (P ! NULL)//当P不是空指针说明找到了{if (!IsLast(P, L)){P-Prev-Next P-Next;P-Next-Prev P-Prev;free(P);}else //最后一个结点特殊处理最后一个结点p-next无prev{P-Prev-Next NULL;free(P);}}}//插入元素X到位置P后面 void Insert(ElementType X, List L, Position P) {Position TmpCell;TmpCell malloc(sizeof(struct Node));if (TmpCell NULL)FatalError(Out of Space!!!);TmpCell-Element X;TmpCell-Next P-Next;P-Next TmpCell;TmpCell-Prev P; }//获取链表头 Position Header(List L) {return L; }//获取链表第一个元素的位置 Position First(List L) {return L-Next; }//获取位置P的下后一个位置 Position Advance(Position P) {return P-Next; }//获取位置P的上前一个位置 Position Front(Position P) {return P-Prev; }//提取位置P处结构里面的值 ElementType Retrieve(Position P) {return P-Element; }//打印链表 void PrintList(const List L) {Position P Header(L);if (IsEmpty(L))printf(Empty list\n);else{do{P Advance(P);printf(%d , Retrieve(P));} while (!IsLast(P, L));printf(\n);} }//打印链表L中那些由P所指定的位置上的元素。例如P1346将L //中的第1第3第4第6个元素打印出来 void PrintLots(List L, List P) {int count 1;Position Lpos, Ppos;Lpos First(L);Ppos First(P);while (Lpos ! NULLPpos ! NULL){if (Ppos-Element count){printf(%d , Ppos-Element);Ppos Advance(Ppos);}Lpos Advance(Lpos);}}//通过只调整指针来交换两个相邻的元素P是要调换两个元素中的前一 //个指针 void SwapWithNext(Position P, List L) {Position AfterP;//AfterP是后一个指针if (P ! NULL){AfterP Advance(P);if (AfterP ! NULL)//下面总共六条语句动六根线除去if //前两条动P的一个节点接下来两条语句动AfterP的后一个节点最后两条 //语句动P和AfterP两个节点{P-Prev-Next AfterP;//先调换P的前一个节点的 //next让它指向AfterPAfterP-Prev P-Prev;//再让AfterP的前节点指向P //的前一个节点这样P的前一个节点就指向好了if (Advance(AfterP) ! NULL)//为了防止After是尾指 //针如果After是尾指针,则AfterP-NextNULL没有前节点就什么 //都不做AfterP-Next-Prev P; // 让AfterP的后一个 //节点的前节点改为指向PP-Next AfterP-Next;//P的Next指向AfterP的下一 //个节点AfterP-Next P;//AfterP的下一个节点指向PP-Prev AfterP;//P的前节点指向After;}} }//通过只调整指针来交换两个不相邻的元素p1和p2 void SwapWithNoNext(Position P1, Position P2, List L)//p1在前p2 //在后 {Position P1f, P1b, P2f, P2b;//构造四个中间变量,清晰P1f P1-Prev;P1b P1-Next;P2f P2-Prev;P2b P2-Next;//八条语句P1f-Next P2;P2-Prev P1f;P2-Next P1b;P1b-Prev P2;P2f-Next P1;P1-Prev P2f;P1-Next P2b;if (P2b!NULL)//如果P2bNULL,就没有前指针PrevP2b-Prev P1; }//求两个链表的交集 List IntersectList(List L1, List L2) {List ResultList;Position L1Pos, L2Pos, ResultPos;ResultList MakeEmpty(NULL);L1Pos First(L1);L2Pos First(L2);ResultPos Header(ResultList);while (L1Pos ! NULLL2Pos ! NULL){if (L1Pos-Element L2Pos-Element)L1Pos Advance(L1Pos);else if (L1Pos-Element L2Pos-Element)L2Pos Advance(L2Pos);else{Insert(L1Pos-Element, ResultList, ResultPos);ResultPos Advance(ResultPos);L1Pos Advance(L1Pos);L2Pos Advance(L2Pos);}}return ResultList; }//求两个链表的并集 List UnionList(Position L1, Position L2) {List ResultList;ElementType InsertElement;Position L1Pos, L2Pos, ResultPos;ResultList MakeEmpty(NULL);L1Pos First(L1);L2Pos First(L2);ResultPos Header(ResultList);while (L1Pos ! NULLL2Pos ! NULL){if (L1Pos-Element L2Pos-Element){InsertElement L1Pos-Element;L1Pos Advance(L1Pos);}else if (L1Pos-Element L2Pos-Element){InsertElement L2Pos-Element;L2Pos Advance(L2Pos);}else{InsertElement L1Pos-Element;L1Pos Advance(L1Pos);L2Pos Advance(L2Pos);}Insert(InsertElement, ResultList, ResultPos);ResultPos Advance(ResultPos);}while (L1Pos ! NULL){Insert(L1Pos-Element, ResultList, ResultPos);ResultPos Advance(ResultPos);L1Pos Advance(L1Pos);}while (L2Pos ! NULL){Insert(L2Pos-Element, ResultList, ResultPos);ResultPos Advance(ResultPos);L2Pos Advance(L2Pos);}return ResultList; }  测试函数testlist.c 1 #includestdio.h2 #include list.h3 main()4 {5 List L,L1;6 Position P,P1;7 int i;8 L MakeEmpty(NULL);9 P Header(L); 10 PrintList(L); 11 12 L1 MakeEmpty(NULL); 13 P1 Header(L1); 14 PrintList(L1); 15 16 17 for (i 0; i 50; i1) 18 { 19 Insert(i, L, P); 20 //PrintList(L); 21 P Advance(P); 22 } 23 PrintList(L); 24 printf(\n); 25 for (i 1; i 100; i3) 26 { 27 Insert(i, L1, P1); 28 //PrintList(L); 29 P1 Advance(P1); 30 } 31 PrintList(L1); 32 printf(\n); 33 34 PrintList(IntersectList(L, L1)); 35 printf(\n); 36 PrintList(UnionList(L, L1)); 37 //PrintLots(L, L1); 38 39 //SwapWithNext(Advance(Advance(Advance(L))),L);//换头两个元素 40 //SwapWithNoNext(Advance(L), Advance(Advance(Advance(Advance(L)))),L); 41 //for (i 0; i 10; i 2) 42 // Delete(i, L); 43 //for (i 0; i 10; i) 44 //{ 45 // if ((i % 2 0) (Find(i, L) ! NULL)) 46 // printf(Find fails\n); 47 //} 48 //printf(Finished deletions\n); 49 //PrintList(L); 50 DeleteList(L); 51 DeleteList(L1); 52 return 0; 53 } 转载于:https://www.cnblogs.com/xinlovedai/p/6216160.html
http://www.zqtcl.cn/news/399450/

相关文章:

  • 湖南专业网站建设服务做网站的底图尺寸多大
  • 山东省住房与建设厅网站首页有名的wordpress主题商
  • 常州市金坛区网站建设毕业设计代做淘宝好还是网站好
  • 品牌网站建设营销型网站设计网站整合方案
  • 网站开发设计师网站代理什么意思
  • 网站层级关系邯郸品牌商标vi设计策划公司
  • 网站开发产品需求说明小网站代码
  • 苏州网站推广排名网站建设方案范文8篇
  • 自己做考试题目网站广州番禺区美食攻略
  • 广州做网站如何如何制作一个网页
  • 网站定制开发收费标准是多少网站代码优化方案
  • 制作卡牌的网站深圳正规煤气公司
  • 手表网站哪家好网站用图片
  • 群辉nas 做网站wordpress linux 中文
  • 平面设计素材网站排名巩义网站建设方案表
  • 延庆网站制作搜索引擎优化的基础是什么
  • 管理手机网站商城网站备案流程
  • 怀化买房网站网站广告js代码添加
  • 做网站 帮别人卖服务器wordpress主题多页面
  • 代理游戏网站潍坊市建设工程管理处网站
  • 大同推广型网站建设网站规划建设与管理维护第二版答案
  • 做网站需要代码吗户外媒体网站建设免费
  • 做什么网站国外做图标网站
  • 网站建设技术部职责门户网站工作总结
  • 用个人电脑做服务器建网站急切网头像在线制作图片
  • 企业网站制作教程浙江省住房和城乡建设厅网站
  • 一个网络空间如何做两个网站哪个网站兼职做设计比较好
  • jquery代码做的网站免费搭建网站模板
  • 铁路建设监理协会官方网站邯郸市网
  • 马鞍山集团网站建设客流分析系统公司