数据结构习题——1顺序表的插入运算

description

已知顺序表L递增有序,编写程序,将X插入到线性表的适当位置上,以保持线性表的有序性。

input

第一行输入顺序表元素个数elenum;(0<elenum<1000)

第二行输入顺序表L;

第三行输入插入值X。

output

输出插入X后的有序顺序表

sample_input

7

2 3 4 5 6 7 8

1

sample_output

1 2 3 4 5 6 7 8

#include<stdio.h>
#include<stdlib.h>

typedef struct node{
	int *a;
	int length;
	int Size;
}SeqList,*PList;
PList SeqList_Init(PList base,int *s,int n)
{
	int i;
	//base=(PList)malloc(sizeof(SeqList));
	base->a=(int *)malloc(sizeof(int)*1000);
	base->Size=1000;
	base->length=0;
	for(i=0;i<n;i++){
		base->a[i]=s[i];
		base->length++;
	}
	return base;
}
void SeqList_Insert(PList base,int x)
{
	int i,*q,*p;
	SeqList list=*base;
	for(i=0;i<base->length;i++){
		if(base->a[i]<x)continue;
		else break;
	}
	q=&(base->a[i]);
	for(p=&(base->a[base->length-1]);p>=q;--p)
		*(p+1)=*p;
	*q=x;
	base->length++;
}
void SeqList_Show(PList p)
{
	int i;
	for(i=0;i<(p->length);i++){
		printf("%d ",p->a[i]);
	}
	printf("\n");
}
int main()
{
	SeqList aaa;
	PList p=&aaa;
	int n,a[1000],x,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);
	scanf("%d",&x);
	SeqList_Init(p,a,n);
	SeqList_Insert(p,x);
	SeqList_Show(p);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41858784/article/details/82180041