数据结构——线性表(SWUSTOJ 943: 顺序表插入操作的实现)

943: 顺序表插入操作的实现

    • 题目描述
    • 输入
    • 输出
    • 样例输入
    • 样例输出
    • 源代码

题目描述

建立长度为n的顺序表,在指定的数据元素item之前插入数据元素data。如果指定的数据元素item不存在,则将data插入到顺序表的尾端。(数据类型为整型)

输入

第一行为顺序表的长度n;
第二行为顺序表中的数据元素;
第三行为指定的数据元素item;
第四行为要插入的数据元素data;

输出

输出结果为顺序表中的数据元素。

样例输入

10
10 20 30 40 50 60 70 80 90 100
50
55

样例输出

10 20 30 40 55 50 60 70 80 90 100

源代码

#include
#include
#define Max 100
typedef struct
{
     
	int data[Max];
	int length;
}Sqlist;

void InitList(Sqlist *&L)		//初始化顺序表 
{
     
	L = (Sqlist *)malloc(sizeof(Sqlist));
	L->length = 0;
}

void CreatList(Sqlist *&L)		//创建顺序表 
{
     
	int i,n;
	scanf("%d" , &n);
	for(i=0 ; i<n ; i++)
		scanf("%d", &L->data[i]);
	L->length = n;
}

void ListInsert(Sqlist *&L,int item,int data)
{
     
	int j,k = 0;
	while(k<L->length && L->data[k]!=item)		//查找元素item的位置 
		k++;
	if(k>=L->length){
     		//如果元素item不在顺序中 
		L->data[L->length] = data;		//将新元素 data插入表尾 
		L->length++;		//顺序表长度增1 
	}else{
     					//如果元素item在顺序表中 
		for(j=L->length+1 ; j>k ; j--) 		//将data[k]以及之后的元素后移一个位置 
			L->data[j] = L->data[j-1];
		L->data[k] = data;			//插入新元素data 
		L->length++;		//顺序表长度增1 
	}
}

void DispList(Sqlist *&L)
{
     
	for(int i=0 ; i<L->length ; i++)
		printf("%d ", L->data[i]);
}

int main()
{
     
	Sqlist *L;
	int item,data;
	InitList(L);
	CreatList(L);
	scanf("%d", &item);
	scanf("%d", &data);
	ListInsert(L,item,data);
	DispList(L);	
	return 0;
 } 

你可能感兴趣的:(数据结构,SWUSTOJ,线性表,数据结构,西南科技大学,SWUST,题解,OJ,数据结构)