IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 已知指针la和lb分别指向两个无头结点的单链表的首个节点。编写程序完成从la中删除第j个元素开始的len个元素,并将这len个元素查入到表lb中的第j个元素之前 -> 正文阅读

[数据结构与算法]已知指针la和lb分别指向两个无头结点的单链表的首个节点。编写程序完成从la中删除第j个元素开始的len个元素,并将这len个元素查入到表lb中的第j个元素之前

C语言实现如下

#include <stdio.h>
typedef int Elemtype;
typedef struct Linknode
{
    Elemtype data;
    struct Linknode *next;
}Linknode,*Linklist;

//插入节点,创建链表(带有头节点)

void creatTable(Linklist *L)
{
    *L=(Linklist )malloc(sizeof(Linknode));
    (*L)->next=NULL;
    Elemtype data;
    scanf("%d",&data);
    Linknode * lnode=(Linknode *)malloc(sizeof(Linknode));
    lnode->data=data;
    lnode->next=(*L)->next;
    (*L)->next=lnode;
    while(data!=9999)
    {
        scanf("%d",&data);
        Linknode * node=(Linknode *)malloc(sizeof(Linknode));
        node->data=data;
        node->next=(*L)->next;
        (*L)->next=node;
    }
}

//创建无头结点的链表
void createNoheadTable(Linklist *head)
{
    *head = (Linklist )malloc(sizeof(Linknode));
    Elemtype data;
    scanf("%d",&data);
    (*head)->data=data;
    Linknode *tail=*head;
    while(data!=9999 && tail)
    {
        scanf("%d",&data);
        Linknode *temp=(Linknode *)malloc(sizeof(Linknode));
        temp->data=data;
        temp->next=NULL;
        tail->next=temp;
        tail=tail->next;
    }
}


void getItemNode(Linklist head,Linknode **prenode,Linknode**pnode,int index)
{
    if(head==NULL)
        return ;
    if(index<=0)
        return ;
    Linknode *lnode=head;
    Linknode *pmove=NULL;
    //printNoheadTable(lnode);
    int cnt=1;
    while(lnode&&(cnt<index))
    {
        pmove=lnode;
        lnode=lnode->next;
        cnt++;
    }

    *prenode=pmove;
    *pnode=lnode;
}

//删除la表元素,并插入lb表中,la与lb链表无头结点
void operateLinlist(int j,int len,Linklist *la,Linklist *lb)
{
    Linknode *prejnodela=NULL;
    Linknode *pjnodela=NULL;

    getItemNode(*la,&prejnodela,&pjnodela,j);

    
    //printf("%d\n",prejnodela->data);
    //printf("%d\n",pjnodela->data);

    int cnt=1;
    //Linknode *headtemp=Linklist )malloc(sizeof(Linknode));
    Linknode *insertTail=(Linklist )malloc(sizeof(Linknode));
    insertTail->next=NULL;
    Linknode *tail=insertTail;
    //headtemp->next=insertTail;
    while(pjnodela&&(cnt<=len))
    {
        Linknode *tempt = pjnodela;
        pjnodela=pjnodela->next;
        tempt->next=NULL;
        tail->next=tempt;
        tail=tail->next;
        cnt++;
    }
  
    //printNoheadTable(prejnodela);
    //插入到lb链表中
    Linknode *prejnodelb=NULL;
    Linknode *pjnodelb=NULL;
    getItemNode(*lb,&prejnodelb,&pjnodelb,j);


    tail->next=pjnodelb;
    prejnodelb->next=prejnodela->next;

    //删除la表中的元素
    prejnodela->next=pjnodela;

}
//打印无头结点链表
void printNoheadTable(Linklist head)
{
    if(head==NULL)
        return;
    Linknode *lnode=head;
    while(lnode)
    {
        printf("%d\n",lnode->data);
        lnode=lnode->next;
    }
}
//打印链表
void print(Linklist L)
{
    if(L==NULL)
    {
        return ;
    }
    Linknode *lnode=L->next;
    while(lnode)
    {
        printf("%d\n",lnode->data);
        lnode=lnode->next;
    }
}
int main()
{
    Linklist LA;
    createNoheadTable(&LA);

    Linklist LB;
    createNoheadTable(&LB);

    Linknode *prenode=NULL;
    Linknode *pnode=NULL;
    int index=3;
    getItemNode(LA,&prenode,&pnode,index);
   // printf("%d\n",prenode->data);
    //printf("%d\n",pnode->data);

    operateLinlist(index,5,&LA,&LB);
    printNoheadTable(LB);
	printNoheadTable(LA);
}

如果删除的是从头结点开始,插入也是从头结点开始则这几行代码需要改变

	tail->next=pjnodelb;
    prejnodelb->next=prejnodela->next;

    //删除la表中的元素
    prejnodela->next=pjnodela;

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:27:49  更:2021-08-04 11:28:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:57:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码