博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构与算法分析——C语言描述 第三章的单链表
阅读量:5040 次
发布时间:2019-06-12

本文共 2324 字,大约阅读时间需要 7 分钟。

与分析——描述 第三章的单链表

很基础的东西。走一遍流程。有人说学编程最简单最笨的方法就是把书上的代码敲一遍。这个我是头文件是照抄的。.c源文件自己实现。

 

 

list.h

 

[cpp]   
 
  1. typedef int ElementType;  
  2. #ifndef _List_H  
  3. #define _List_H  
  4.   
  5. struct Node;  
  6. typedef struct Node *PtrToNode;  
  7. typedef PtrToNode List;  
  8. typedef PtrToNode Position;  
  9.   
  10. List CreatList();  
  11. List MakeEmpty(List L);  
  12. int IsEmpty(List L);  
  13. int IsLast(Position P, List L);  
  14. Position Find(ElementType X, List L);  
  15. void Delete(ElementType X, List L);  
  16. Position FindPrevious(ElementType X, List L);  
  17. void Insert(ElementType X, Position P);  
  18. void DeleteList(List L);  
  19. Position Header(List L);  
  20. Position First(List L);  
  21. Position Advance(Position P);  
  22. ElementType Retrieve(Position P);  
  23.   
  24. #endif  

 

 

list.c

 

[cpp]   
 
  1. #include"list.h"  
  2. #include<stdlib.h>  
  3. #include"fatal.h"  
  4.   
  5. struct  Node  
  6. {  
  7.     ElementType Element;  
  8.     Position Next;  
  9. };  
  10.   
  11. List CreatList() {  
  12.     List l = malloc(sizeof(struct Node));  
  13.     if (l == NULL)  
  14.         Error("out of memory");  
  15.     l->Next = NULL;  
  16.     return l;  
  17. }  
  18.   
  19. List MakeEmpty(List L) {  
  20.     if (L != NULL)  
  21.         DeleteList(L);  
  22.     L = malloc(sizeof(struct Node));  
  23.     if (L == NULL)  
  24.         FatalError("Out of memory");  
  25.     L->Next = NULL;  
  26.     return L;  
  27. }  
  28.   
  29. int IsEmpty(List L) {  
  30.     return L->Next == NULL;  
  31. }  
  32.   
  33. int IsLast(Position P, List L) {  
  34.     return P->Next == NULL;  
  35. }  
  36.   
  37. Position Find(ElementType X, List L) {  
  38.     Position P;  
  39.     P = L->Next;  
  40.     while (P != NULL&&P->Element != X)  
  41.     {  
  42.         P = P->Next;  
  43.     }  
  44.     return P;  
  45. }  
  46.   
  47. void Delete(ElementType X, List L) {  
  48.     Position P;  
  49.     P = FindPrevious(X, L);  
  50.     if (!IsLast(P, L)) {  
  51.         Position TmpCell = P->Next;  
  52.         P->Next = TmpCell->Next;  
  53.         free(TmpCell);  
  54.     }  
  55. }  
  56.   
  57. Position FindPrevious(ElementType X, List L) {  
  58.     Position P;  
  59.     P = L;  
  60.     while (P->Next != NULL&&P->Next->Element != X)  
  61.         P = P->Next;  
  62.     return P;  
  63. }  
  64.   
  65. void Insert(ElementType X, Position P) {  
  66.     Position tmpCell;  
  67.     tmpCell = malloc(sizeof(struct Node));  
  68.     if (tmpCell == NULL)  
  69.         FatalError("Out of space!!");  
  70.     tmpCell->Element = X;  
  71.     tmpCell->Next = P->Next;  
  72.     P->Next = tmpCell;  
  73. }  
  74.   
  75. void DeleteList(List L) {  
  76.     Position p;  
  77.     p = L->Next;  
  78.     L->Next = NULL;  
  79.     while (p != NULL){  
  80.         Position tmp;  
  81.         tmp = p->Next;  
  82.         free(p);  
  83.         p = tmp;  
  84.     }  
  85. }  
  86.   
  87. Position Header(List L) {  
  88.     return L;  
  89. }  
  90.   
  91. Position First(List L) {  
  92.     return L->Next;  
  93. }  
  94.   
  95. Position Advance(Position P) {  
  96.     return P->Next;  
  97. }  
  98.   
  99. ElementType Retrieve(Position P) {  
  100.     return P->Element;  
  101. }  

 

fatal.h

 

[cpp]   
 
    1. #include<stdio.h>  
    2. #include<stdlib.h>  
    3.   
    4. #define Error(Str) FatalError(Str)  
    5. #define FatalError(Str) fprintf(stderr,"%s\n",Str),exit(1)  

转载于:https://www.cnblogs.com/aituming/p/6131702.html

你可能感兴趣的文章
KRPano动态热点专用素材图50多个,加动态热点使用方法
查看>>
yii模型ar中备忘
查看>>
C#线程入门
查看>>
CSS清除浮动方法
查看>>
JVM内存回收机制简述
查看>>
洛咕 P2480 [SDOI2010]古代猪文
查看>>
js-创建对象的几种方式
查看>>
JDK JRE Java虚拟机的关系
查看>>
2018.11.20
查看>>
word20161215
查看>>
12th week blog
查看>>
dijkstra (模板)
查看>>
python小记(3)
查看>>
编译Linux驱动程序 遇到的问题
查看>>
大型分布式网站架构技术总结
查看>>
HDU 1017[A Mathematical Curiosity]暴力,格式
查看>>
[算法之美] KMP算法的直观理解
查看>>
EntityFramework 性能优化
查看>>
【ASP.NET开发】菜鸟时期的ADO.NET使用笔记
查看>>
android圆角View实现及不同版本号这间的兼容
查看>>