目录
题目要求:
本题要求实现一个函数,在单链表L中的第i个位置上插入2个数据(data1, data2)。
函数接口定义:
int insert2(LinkList &L, int i, ElemType data1, ElemType data2);
解释接口参数:其中L
, i
,data1
,data2
都是用户传入的参数。 L
是指向单链表头结点的指针,单链表结点有两个成员,一个是data域,存放该结点的数据元素,不特别说明的话元素类型为整型,一个是next域 ,指向下一个结点; i
是指插入的位置。data1
和data2
是指要插入的两个元素。函数返回的值为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
学习时间:
2022/10/5
- 星期三晚上21:00
随便写写的答案:
int insert2(LinkList &L, int i, ElemType data1, ElemType data2)
{
int j = 1;
LinkList p,s,x;
p = L;
while (p && j<i) /*寻找第i个结点*/
{
p = p->next;
++j;
}
if (!p || j >i)
return 0; /*第i个元素不存在*/
s = (LinkList)malloc(sizeof(LNode)); /*生成新的结点*/
x = (LinkList)malloc(sizeof(LNode));
s->data = data1;
x->data = data2;
s->next = x;
x->next = p->next; /*将p的后继结点赋值给s的后继*/
p->next = s; /*将s赋值给p的后继*/
return 1;
}