數據結構習題——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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章