链表ADT C语言实现
来源:互联网 发布:天下3冰心捏脸数据大赛 编辑:程序博客网 时间:2024/04/26 11:36
代码的规范与编程风格的一致是非常重要的。
下列代码C语言风格的代码。
代码的风格是 Mark Allen weiss 所著的 数据结构与算法分析----C语言描述上的。
这里的链表是带有表头的单链表。通过添加表头可以让代码清晰。
#ifndef _List_Hstruct Node;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;List MakeEmpty(List L);int IsEmpty(List L);int IsLast(Position P,list L);Position Find(ElementType X,List L);void Delete(ElementType X,List L);Position FindPrevious(ElementType X,List L);void Insert(ElementType X,List L);void DeleteList(List L);#endif
/*place in the implementation file*/struct Node{ ElementType Element; Position Next;};/*return true if L is empty,判断链表是否为空*/int IsEmpty(List L){ return P->Next==NULL;}/*return true if P is the last position in list L*//*Parameter L is unused in this implementation*/
/*测试当前位置是否是链表末尾*/int IsLast(Position P,List L){ return P->Next==NULL;}/*return Position of X in L;NULL if not found*/
/*find例程*/Position Find(ElementType X,List L){ Position P; P=L->Next; while(P!=NULL&&P->Element!=X) P=P->Next; return P;}/*Delete first occurrence of X from a List*//*Assume use of a header node */
/*链表的删除例程*/void Delete(ElementType X,List L){ Position P,TmpCell; P=FindPrevious(X,L); if(!IsLast(P,L)) { TmpCell=P->Next; p->Next=TmpCell->Next; free(TmpCell); }}/*if x is not found , then next field of returned*//*position is NULL*//*Assume a header*/
/*Findprevious例程*/Position FindPrevious(ElementType X,List L){ Position P; P=L; while(P->Next!=NULL&&P->Next->Element!=X) { P=P->Next; } return P;}/*insert(after legal position)*//*Header implemtentation assumed*//*parameter L is unused in this implementation*/
/*链表的插入例程*/void Insert(ElementType X,List L){ Position TmpCell; TmpCell=malloc(sizeof(struct Node)); if(TmpCell==NULL) { fprintf(stderr,"out of space"); error(1); } TmpCell->Element=X; TmpCell->Next=P->Next; p->Next=TmpCell;}
/*删除表*/void DeleteList(List L){ Position P,Tmp; P=L->Next;/*header assumed*/ L->Next=NULL; while(P!=NULL) { Tmp=P->Next; free(P); P=Tmp; }}
1 0
- 链表ADT C语言实现
- 链表ADT C语言实现
- 队列(Queue ADT)C语言实现
- 不相交集ADT实现文件C语言
- 数据结构C语言实现——ADT Triplet
- C ADT 的实现
- C语言 抽象数据类型ADT
- 链表ADT实现
- C语言ADT(抽象数据类型编程)
- 链表c语言实现
- 链表-C语言实现
- 链表 C语言实现
- 链表C语言实现
- 链表(LinkedList) C 语言实现
- 链表(C语言实现)
- 不相交集ADT头文件C语言
- C 语言中的ADT 中的一个列表的问题
- 数据结构:顺序表的ADT(C语言描述)
- 在WPF中的Canvas上实现控件的拖动、缩放
- 232. Implement Queue using Stacks LeetCode
- 大数相乘
- 移动web开发框架研究
- ZOJ 2674 Strange Limit
- 链表ADT C语言实现
- TQ2440,学习笔记之开发板介绍
- 动态规划入门之LCS(2)
- 第十一章编程练习(7)
- 2016/02/11
- 线性动态规划-文件排版
- Light OJ 1125 Divisible Group Sums (DP)
- 九度OJ 1102 最小面积子矩阵
- 取石子游戏 (HDU_256) 斐波拉契 博弈