单链表基本操作(二)

来源:互联网 发布:ipad如何看淘宝直播 编辑:程序博客网 时间:2024/06/16 09:49

得到单链表的长度:(头结点不计算在内)

int length(LNode *L){    int len = 0;    struct LNode *temp = L->next;        while(temp != NULL){    len++;    temp = temp->next;    }    return len;}

单链表的删除:删除指定结点并返回删除结点的数据

ElemType deleteLNode(LNode *L,int idx){    int i = 0;    ElemType ch = '\0';    struct LNode *pre = L;         /* 前驱结点 */    struct LNode *cur = L->next;   /* 当前结点 */    while(cur!=NULL&&i<idx-1){pre = cur;cur = cur->next;i++;    }    if(NULL==cur||i>idx-1){return -1;    }    /*delete*/    ch = cur->data;    pre->next = cur->next;    free(cur);    return ch;}

插入一个元素到第idx个结点之前

int insert(LNode *L,int idx,ElemType ch){    int i = 0;    struct LNode *new_node = NULL;   /* 新结点 */    struct LNode *cur = L->next;     /* 当前结点 */    struct LNode *pre = L;           /* 前驱结点 */     while(cur!=NULL&&i<idx-1){pre = cur;cur = cur->next;i++;    }    if(NULL==cur||i>idx-1){return -1;    }    new_node = (LNode *)malloc(sizeof(LNode));    if(NULL == new_node){           return -1;    }else{new_node->data = ch;new_node->next = cur;pre->next = new_node;    }    return OK;}


 

原创粉丝点击