在初步学习了单链表的基本操作后,有必要进一步掌握单链表基本操作的变形,加深对链表的理解,以下题为例。
Description
给定一串数字然后给定若干插入和删除操作,将操作后的结果输出。
Input第一行:n这串数字有n个(n>=1) 第二行:n个数字表示这串数字第三行:m表示有m个操作后面m行:I a b c1 c2…cb(在第a个数字后插入b个数c1到cb),D a b(删除第a到b个数字,包括b)数字从1开始。Output操作后的结果。每个数字用空格空开。
Sample Input
2 1 3
2
D 3 3
I 1 5 1 2 3 4 5
Sample Output
2 1 2 3 4 5 1
C++代码实现如下:
#include <iostream>
#define N 100
typedef struct LNode
{
int data;
struct LNode* next;
}LNode,*LinkList;
LinkList Locate(LinkList L,int i) //定位链表结点的函数
{
int j=1;
LinkList p=L->next;
if(i==0)
return L;
if(i<1)
return NULL;
while(p&&j<i)
{
p=p->next;
j++;
}
return p;
}
void insert(LinkList L,int i,int n,int x[]