标签:int empty type link div 初始 node bsp 基本
1 #define int Status 2 #define OK 1 3 #define ERROR 0 4 struct struct { //此处为举例 5 char num[10]; //数据域 6 char name[10];//数据域 7 int score;//数据域 8 }ElemType; 9 typedef struct Lnode{ 10 ElemType data;//数据域 11 struct Lnode *next; //指针域 12 }Lnode,*Linklist; 13 //初始化链表:构造一个空表 14 int initList_L(Linklist L){ 15 L=(Lintlist)malloc(sizeof(Lnode)); 16 L->next=NULL; 17 return OK; 18 } 19 //判断链表是否为空表 20 int ListEmpty(Linklist L){ //若L为空表,返回1;若非空返回0 21 if(L->next) 22 return 0; 23 else 24 return 1; 25 } 26 //单链表的销毁 27 //从头指针开始,依次释放所有节点 28 Status DestroyList_L(Linklist L){ 29 Linklist p; 30 while(L!=NULL){ 31 p=L; 32 L=L->next; 33 free(p); 34 } 35 return OK; 36 } 37 38 //清空单链表 39 //链表任然存在,但链表中无元素,成为空链表(头指针和头结点任然存在) 40 //依次释放所有节点 ,并将头结点指针域设置为空 41 Status ClearList(Linklist L){ 42 Linklist p,q;//或Lnode *p,*q; 43 p=L->next; 44 while(p){ //没到表尾 45 q=p->next; 46 free(p); 47 p=q; 48 } 49 L->next=NULL;//头结点指针域为空 50 return OK; 51 } 52 //求单链表的表长 53 int ListLength_L(Linklist L){//返回L中数据元素的个数 54 Linklist p; //Lnode *p; 55 p=L->next; //P指向第一个结点 56 i=0; 57 while(p){ //遍历单链表,统计节点数 58 i++; 59 p=p->next; 60 } 61 return i; 62 } 63 //取值--取单链表中的第I个元素的内容 64 Status GetElem_L(Linklist L,int i,ElemType &e){ 65 //获取L中第i个元素的内容,通过变量e返回 66 p=L->next;j=1;//初始化P指向首元结点 67 while(p&&j<i){ //向后扫描,直到P指向第I个元素或p为空时 68 p=p->next;++j; 69 } 70 if(!p||j>i) return ERROR;//第i个元素不存在 71 e=p->data; //取第i个元素 72 return Ok; 73 } 74
标签:int empty type link div 初始 node bsp 基本
原文地址:https://www.cnblogs.com/suqf/p/9736217.html