首页 > 代码库 > C语言链表完整实现
C语言链表完整实现
#include <stdio.h> #include <stdlib.h> #define ElementType int typedef struct Node *List; typedef struct Node{ ElementType Data; List Next; }; int Length(List PtrL); List FindKth(int K,List PtrL); List Find(ElementType X,List PtrL); bool Insert(ElementType X,int i, List &PtrL); List Delete(int i,List &PtrL); void InitList(List PtrL){ PtrL= (List)malloc(sizeof(struct Node)); PtrL->Next=NULL; } void printL(List PtrL){ printf("-------------------------------------------------------------------\n"); List TmpList = PtrL; while(TmpList){ printf("%d\n",TmpList->Data); TmpList = TmpList->Next; } } int main(){ List PtrL; InitList(PtrL); Insert(10,1,PtrL); printL(PtrL); Insert(20,2,PtrL); printL(PtrL); for(int i = 1;i<10;i++) Insert(i,i,PtrL); printL(PtrL); for(int i = 1;i<5;i++) Delete(i,PtrL); Delete(5,PtrL); printL(PtrL); return 0; } int Length(List PtrL){ List TmpPtrL = PtrL; int i = 0; while(TmpPtrL){ TmpPtrL = TmpPtrL->Next; i++; } return i; } List FindKth( int K, List PtrL ) { List p = PtrL; int i = 1; while (p !=NULL && i < K ) { p = p->Next; i++; } if ( i == K ) return p; /* 找到第K个,返回指针 */ else return NULL; /* 否则返回空 */ } List Find(ElementType X,List L){ List TmpList = L; while(TmpList->Data!=X&&TmpList) TmpList = TmpList->Next; return TmpList;//不管是不是空,就是这一个 } bool Insert(ElementType X,int i, List &PtrL){ //如果插入节点到头部 List s,p; if(i==1){ s = (List)malloc(sizeof(struct Node)); s->Data=http://www.mamicode.com/X;"%d",PtrL->Data); return true; } p = FindKth(i-1,PtrL); if(p==NULL){ printf("插入位置不合适\n"); return false; }else{ s = (List)malloc(sizeof(struct Node)); s->Data=http://www.mamicode.com/X;"第i-1个节点不存在\n"); return NULL; }else if(p->Next==NULL){ printf("第i个节点不存在\n"); return NULL; }else{ s = p->Next; p->Next=s->Next; free(s); return PtrL; } }
C语言链表完整实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。