资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单链表相关库函数单链表相关库函数(C(C 语言实现语言实现) )/*Copyright: File name: linklist.hDescription: 鐢簬璇粏璇存槑姝搴忔枃浠跺畬鎴愮殑涓昏鍔熻兘锛屼笌鍏朵粬妯潡鎴栧嚱鏁扮殑鎺彛锛岃緭鍑?鍊笺佸彇鍊艰寖鍥淬佸惈涔夊強鍙傛暟闂寸殑鎺 埗銆侀搴忋佺嫭绔嬫垨渚濊禆绛夊叧绯?Author: lwbVersion: 0.1Date: 2012/12/03History: */#ifndef _linklist_h_#define _linklist_h_struct Node;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;typedef int ElementType;/*Function: Description: / 鍑芥暟鍔熻兘銆佹 兘绛夌殑鎻忚堪Calls: / 琚湰鍑芥暟璋冪敤鐨勫嚱鏁版竻鍗?Called By: / 璋冪敤鏈嚱鏁扮殑鍑芥暟娓呭崟Input: / 杈撳叆鍙傛暟璇存槑锛屽寘鎷瘡涓弬鏁扮殑浣?/ 鐢佸彇鍊艰鏄庡強鍙傛暟闂村叧绯汇?Output: / 瀵硅緭鍑哄弬鏁扮殑璇存槑銆?Return: / 鍑芥暟杩斿洖鍊肩殑璇存槑Others: / 鍏跺畠璇存槑*/*鍗曢摼琛熀鏈搷浣?*/ListlkListMakeEmpty( List L);intlkListIsEmpty( List L);voidlkListDelete(ElementType X,List L);Position lkListFind(ElementType X,List L);Position lkListFindPrevious(ElementType X,List L);voidlkListInsert(Position p,Position insertP);intlkListIsLast(Position P,List L);intlkListAdd(List *l,ElementType *element);intlkListDestroy(List *l);/*/*鎵睍鎿嶄綔*/intlkListGetLength(List l);/voidlkListPrint(List l,int n);ListlkListCreate(int n);/闇瑕佷慨鏀?intlkListInitValue(List l,ElementType *arr,int n);intlkListPrintLots(List l,List p);/O(l + p)intlkListSwapNext(Position beforeP);ListlkListIntersect(List l,List p);ElementType*lkListGetOrderValue(List l,int order);/*Linus 鐨勫崟閾捐鍒犻櫎鍑芥暟*/voidlkListRemove_if(List *l,ElementType *delElem);/*/#endif#ifndef NULL#ifdef _cplusplus#define NULL 0#else#define NULL (void *)0)#endif#endifstruct NodeElementType Element;Position Next;#include“linkList.h“#include#include#include/*Function:lkListInitValueDescription: ?谐?Calls:lkListIsEmpty(); lkListIsLast();Called By: Input: l,?;arr,?;n,?;Return:?Others: */int lkListInitValue(List l,ElementType *arr,int n)/*int i;Position p;p=l;if(lkListIsEmpty(l)printf(“Empty linkList!n“);return 0;for(i=0;iElement = arri;p = p-Next;return (i+1);*/int counter;Position p;p = l;counter = 0;while(counter Element = arrcounter;memcpy(p = p-Next;counter +;return counter;/*Function: lkListCreateDescription: ?Calls: mallocCalled By: noInput: n,?小Output: noReturn: l,?;NULL,? ?Others: */List lkListCreate(int n)/* int i;List l;Position p;l = malloc(sizeof(struct Node) * n);if(l = NULL)return NULL;else/init the list p = l;for(i=0;iNext = (Position )(char *)p + sizeof(struct Node);p = p-Next;p-Next = NULL;return l;*/List headL;Position newNode,pos;int i;newNode = malloc(sizeof(struct Node);memset(/newNode-Element = 0;pos = newNode;headL = newNode;for(i=0;iElement = 0;pos-Next = newNode;pos = pos-Next;pos-Next = NULL;return headL; /*Function: lkListPrintDescription: ?械?Calls:printfCalled By: noneInput: l,?;n,?;Output: ?械?Return: voidOthers: */void lkListPrint(List l,int n)int i;i = 0;if(l = NULL)return;/* doprintf(“%dn“,l-Element);l = l-Next;i+;while(l-Next != NULL)l = l-Next;i+;printf(“n“);/*Function: lkListGetLengthDescription: ?Calls:noneCalled By: noneInput: l,?;Output: voidReturn: i,?Others: / ?*/int lkListGetLength(List l)int i;i = 0;while(l!=NULL)l = l-Next;i+;return i;/*Return true if is empty*/int lkListIsEmpty(List L)return L-Next = NULL;/*Reutrn true if P is the last position in list L*/*Parameter L is un7used in this implementation*/int lkListIsLast(Position P,List L)return P-Next = NULL;/*Reutrn Position of X in L;NULL if not found*/Position lkListFind(ElementType X,List L)Position P;P = L-Next;while(P != NULL return P;/*Delete first occurrence of X from a list */*Assume use of a header node */void lkListDelete(ElementType X,List L)Position P,TmpCell;P = lkListFindPrevious( X,L);if( !lkListIsLast( P, L)TmpCell = P-Next;P-Next = TmpCell-Next;free(TmpCell);Position lkListFindPrevious(ElementType X,List L)Position P;P = L;while( P-Next != NULL return P;/*void lkListInsert( ElementType X,List L,Position P)Position TmpCell;TmpCell = malloc(sizeof(struct Node);if( TmpCell = NULL)printf(“Out of space!n“);return ;TmpCell-
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号