算法:单链表实现
Posted jmst
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法:单链表实现相关的知识,希望对你有一定的参考价值。
list.h
#ifndef _LIST_H_ #define _LIST_H_ struct Node; typedef int ElementType; typedef struct Node *PtrToNode; typedef PtrToNode List; typedef PtrToNode Position; List MakeEmpty(List L); int IsEmpty(List L); Position Find(ElementType X,List L); Position FindPrevious(ElementType X,List L); void Delete(ElementType X,List L); void Insert(ElementType X,List L,Position P); void DeleteList(List L); #endif struct Node { ElementType element; Position Next; };
list.c
#include "list.h" #include <stdlib.h> #include <stdio.h> List MakeList(List L) { Position P,temp; P=L->Next; while(P!=NULL){ temp=P; P=P->Next; free(temp); } return L; } int IsEmpty(List L) { return L->Next==NULL; } Position Find(ElementType X,List L) { Position P; P=L->Next; L->Next=NULL; while(P!=NULL&&P->element!=X){ P=P->Next; } return P; } Position FindPrevious(ElementType X,List L) { Position P; P=L; while(P->Next!=NULL&&P->Next->element!=X){ P=P->Next; } return P; } void Insert(ElementType X,List L,Position P) { Position temp; temp=malloc(sizeof(struct Node)); if(temp==NULL){ printf("out of space"); exit(1); } temp->element=X; temp->Next=P->Next; P->Next=temp; } void Delete(ElementType X,List L) { Position P,temp; P=FindPrevious(X,L); if(P->Next!=NULL){ temp=P->Next; P->Next=temp->Next; free(temp); } } void DeleteList(List L) { MakeEmpty(L); }
以上是关于算法:单链表实现的主要内容,如果未能解决你的问题,请参考以下文章
字符单链表识别数字,字母,其它字符,并分为三个循环链表的算法c++实现
单链表的逆置使用递归算法出现-842150451这个值,请求高手予以解决。。