个人笔记数据结构与算法———单链表02

 

//单链表

#define ok 1

#define maxsize 100

#include<stdlib.h >

#define ERROR -1

typedef int Elemtype;

typedef int Status;

 

//1定义

typedef struct Lnode{

       Elemtype data;

       struct Lnode *next;

}Lnode ,*LinkList;

 

//2初始化

Status initLinkList(LinkList L){

       L=(LinkList)malloc(sizeof(Lnode));

       L->next=NULL;

       return ok;

}

 

//3判断链表是否为空

int ListEmpty(LinkList L){

       if(L->next)

              return 0;

       else{

              return 1;

       }

}

 

//4销毁

Status DeleList(LinkList&L){

       LinkList p;

       while(L!=NULL){

              p=L;

              L=L->next;  

              free(p);

       }

}

 

//5清空

Status clearList(LinkList&L){

       LinkList p,q;

       p=L->next;

       while(p!=NULL){

              q=p->next;

              free(p);

              p=q;

       }

       L->next=NULL;

       return ok;

}

 

//6求链表表长

int lengthLink(LinkList L){

       LinkList p;

       p=L->next;

       int i=0;

       while(p!=NULL){

              i++;

              p=p->next;

       }

       return i; 

}

 

//7取单链表中第i个元素

Status GetLink(LinkList L,int i,Elemtype &e){//i是获取元素的位置,通过e返回

       LinkList p;

       p=L->next;

       int j=1

       while((p!=NULL)&&(j<i)){

              p=p->next;

              ++j;

       }

       if(!p||j>i){

              return ERROR;

       }else{

              e=p->next;

              return ok;

       }

}

上一篇:C语言 链表基础--整表创建


下一篇:单链表-删除并释放以L为表头指针的单链表的所有结点(双指针法)