大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C技巧 > C语言之链表

C语言之链表(2)

关键词:链表C语言  阅读(1014) 赞(14)

[摘要]本文是对C语言之链表的讲解,对学习C编程技术有所帮助,与大家分享。

  7.删除链表中的相应的数据

/************************************************
 *功能:删除链表中的值
 *参数:链表指针,要删除的值
 *作者:Mr.li
 *日期:14-07-23
 ************************************************/
void delete(List *list, int obj)
{
    //查询要删除的元素是否在链表中,有返还相应的位置,没有则返还-1
    int flag = search(list, obj);
    
    //判断值的合法性
    if (flag == -1)
    {
        printf("没有要删除的值!\n");
    }
    else
    {
        //定义两个辅助游标指针
        Node *p, *q;
        
        //给q,p赋值
        q= list->head;
        p = list->head->next;
        
        //循环查找相应的值并删除
        while (p != NULL)
        {
            if (p->data == obj)
            {
                q->next = p->next;
                p->next = NULL;
                free(p);
                break;
            }
            q = p;
            p = p->next;
        }
    }
}

  8.往链表中插入数据

/************************************************
 *功能:往指定的位置后插入相应的值
 *参数:链表指针,插入的位置,插入的值
 *作者:Mr.li
 *日期:14-07-23
 ************************************************/
void insert(List *list, int local, int number)
{
    int count = 0;
    //判断值的合法性
    if(count > list->count)
    {
        printf("你输入的值不合法\n");
    }
    else
    {
        //定义游标指针,指向链表的头结点
        Node *p = list->head;
        while (count != local) {
            p++;
            count++;
        }
        
        //分配新的结点并给新的结点赋值
        Node *q = (Node *) malloc(sizeof(Node));
        q->data = number;
        q->next = NULL;
        
        //插入新的结点
        q->next = p->next;
        p->next = q;
    }
    
} 
«上一页12下一页»


相关评论