分数 15
作者 daxuejsj
单位 安阳工学院
实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现。
已知顺序表L递增有序,将X插入到线性表的适当位置上,保证线性表有序。。
输入格式:
第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。
输出格式:
对每一组输入,在一行中输出插入X后的递增的顺序表。
输入样例:
在这里给出一组输入。例如:
5
1 3 5 7 9
6
输出样例:
在这里给出相应的输出。例如:
1,3,5,6,7,9,
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
1、顺序结构实现:
#include<iostream>
using namespace std;
int numb[100000], isN;
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> numb[i];
cin >> isN;
for (int i = 0; i < n; i++)
if (isN < numb[i])//内部插入isN
{
//j等于++n更新后数组元素个数,将当前i及以后的元素后移
for (int j = ++n; j > i - 1; j--)
numb[j] = numb[j - 1];
numb[i] = isN;//在下标i位置插入
break;
}
else if (i == n - 1)//最后一位置插入isN
{
numb[n++] = isN;
break;
}
for (int i = 0; i < n; i++)
cout << numb[i] << ",";
return 0;
}
2、链式结构实现(强烈不推荐,作业要求而已(doge
#include<iostream>
using namespace std;
typedef struct LNode
{
int Data;
struct LNode *Next;
}*List;
List Create()
{
List L = new LNode;
L->Data = NULL;//头节点不作存贮
L->Next = NULL;
return L;
}
List In(List L)//链表构建
{
int X, numb;
cin >> X;
List Current = L;//辅助指针
for (int i = 0; i < X; i++)
{
cin >> numb;
//创新结点
List New = new LNode;
New->Data = numb;
New->Next = NULL;
//新结点插入
Current->Next = New;
Current = New;
}
return L;
}
List Insert(List L, int X)//元素插入
{
List Current = L;
//建新结点
List New = new LNode;
New->Data = X;
New->Next = NULL;
while (Current)
{
if (X < Current->Next->Data)
break; //找到位置
else
Current = Current->Next;
}
if (Current == NULL)//X大于链表所有元素
{
Current->Next = New;
}
else //X在链内插入
{
New->Next = Current->Next;
Current->Next = New;
}
return L;
}
void See(List L)//打印
{
List Current = L->Next;
while (Current)
{
cout << Current->Data << " ";
Current = Current->Next;
}
}
int main()
{
List L1;
L1 = Create();
L1 = In(L1);
int Innumb;
cin >> Innumb;
L1 = Insert(L1, Innumb);
See(L1);
return 0;
}