单链表插入2个数据【c/c++】

题目要求

本题要求实现一个函数,在单链表L中的第i个位置上插入2个数据(data1, data2)。

函数接口定义:

int insert2(LinkList &L, int i, ElemType data1, ElemType data2);

解释接口参数:其中L , i,data1,data2 都是用户传入的参数。 L 是指向单链表头结点的指针,单链表结点有两个成员,一个是data域,存放该结点的数据元素,不特别说明的话元素类型为整型,一个是next域 ,指向下一个结点; i 是指插入的位置。data1data2是指要插入的两个元素。函数返回的值为0或1,0代表插入不成功,1代表插入成功。

裁判测试程序样例:


#include<iostream>
using namespace std;
typedef int Status;
typedef int ElemType;
typedef struct node {
    ElemType data; 
    struct node *next;
}LNode,*LinkList;

Status InitList_Lk(LinkList &L) ; // 单链表的初始化,已实现,不用再定义
    
void CreatList(LinkList &L,int n);  //创建含有n个元素的单链表,已实现,不用再定义

void ViewList(LinkList L) ;//打印单链表,已实现,不用再定义

int insert2(LinkList &L, int i, ElemType data1, ElemType data2);//要实现的函数

int main()
{
    LinkList L;
    ElemType a, b;
    int i,n;
    InitList_Lk(L);
    cin >> n;
    CreatList(L,n);
    cin >>i>>a>>b;
    if (insert2(L, i, a, b) ==0)
    {
        cout << "插入不成功!";
    }
    else ViewList(L);
    return 0;
}


/* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

10
34 56 12 5 7 55 78 2  90 6
5
10 9

输出样例:

在这里给出相应的输出。例如:

34 56 12 5 10 9 7 55 78 2 90 6 

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

 答案

答案是自己写的,大家可做参考

int insert2(LinkList &L, int i, ElemType data1, ElemType data2)
{
    int j = 1;
    LinkList p,s,x;
    p = L;
    while (p && j<i) 
    {
        p = p->next;
        ++j;
    }
    if (!p || j >i)
        return 0; 
    s = (LinkList)malloc(sizeof(LNode)); 
    x = (LinkList)malloc(sizeof(LNode));

    s->data = data1;
    x->data = data2;
    s->next = x;
    x->next = p->next;  
    p->next = s;  
    return 1;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值