加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_盐城站长网 (https://www.0515zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

【数据结构】之 线性表详解

发布时间:2021-03-31 15:22:47 所属栏目:站长百科 来源:网络整理
导读:副标题#e# 线性表(Linear List) 基本概念 线性表是由n(n=0)个类型相同数据元素组成的有限序列。数据元素可由若干个数据对象组成,且一个线性表中的数据元素必须属于同一数据对象。 线性表示n个类型相同数据元素的有限序列,对n0,除第一个元素无直接前驱

?

插入
//插入
cNode insertCNode(cNode L){
    Node *pre,*s;    
    int k,i;
    char data;
    pre = L->next;
    k = 1;
    printf("n请输入你要插入的位置和内容(格式: address content):");
    scanf("%d %c",&data);
    getchar();
    
    //插入位置不可能为负 
    if(i <= 0){
        printf("插入失败!插入位置不合法!插入位置不能为负n");
        return NULL;
    }
    
    ////遍历完表且未找到插入位置(此时i大于表的长度) 或 找到插入位置时退出函数 退出循环
    while(pre != L && k < i - 1){
        pre = pre->next;
        k++;
    }
    
    if(pre == L){
        
        // 未找到插入位置(此时i大于表的长度)
        printf("插入失败!插入位置不合法!插入位置超出表的长度n");
        return NULL;
    }else{
        
        //找到插入位置并插入数据     ,注意:pre指向插入位置的前一个结点  
        s = (cNode)malloc(sizeof(Node));
        s->data = data;
        s->next = pre->next;
        pre->next = s;
        L->len++; 
        printf("插入成功!");
        print(L);
        return L;
    }
} 

?

删除
//删除 
cNode delList(cNode L){
    Node *pre,i;
    pre = L;
    printf("请输入删除的数据的位置(格式:address):");
    scanf("%d",&i); 
    getchar();
    
    //删除的位置必须合法 
    if(i > L->len || i<= 0){
        printf("删除的位置超出了链表的长度!n");
        return;
    }
    
    // 找到删除位置退出
    while(pre->next != L && k < i - 1){
        pre = pre->next;
        k++;
    }
    
    //删除操作 
    r = pre->next;
    pre->next = r->next;
    free(r);
    L->len--;
    printf("删除成功!n"); 
    print(L);
    return L;
} 

?

(编辑:网站开发网_盐城站长网 )

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!