#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];
int size;
}sequence_list;
void initseqlist(sequence_list *L)
{ L->size=0;
}
void input(sequence_list *L)
{ datatype x;
initseqlist(L);
printf("请输入一组数据,以0做为结束符:\n");
scanf("%d",&x);
while (x)
{ L->a[L->size++]=x;
scanf("%d",&x);
}
}
void print(sequence_list L)
{ int i;
for (i=0;i<L.size;i++)
{ printf("%5d",L.a[i]);
if ((i+1)%10==0) printf("\n");
}
printf("\n");
}
void insertx(sequence_list *L,datatype x)
{
int j;
if(L->size<x){
j=L->size-1;
while(j>=0&&L->a[j]>x){
L->a[j+1]=L->a[j];
j--;
}
L->a[j+1]=x;
L->size++;
}
}
int main()
{
sequence_list L;
datatype x;
input(&L);
print(L);
printf("请输入待插入的元素:");
scanf("%d",&x);
insertx(&L,x);
printf("插入元素%d之后的顺序表为:",x);
print(L);
}
希望的结果是:原顺序表为:
11 22 3 45 55
第一个位置插入95之后的顺序表为:
95 11 22 3 45 55
删除3之后的顺序表为:
95 11 22 45 55
在45后面插入54之后的顺序表为:
95 11 22 45 54 55
朋友们,怎么写才能达到我想要的结果啊
供参考:
#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];
int size;
}sequence_list;
void initseqlist(sequence_list *L)
{
L->size=0;
}
void input(sequence_list *L)
{
datatype x;
initseqlist(L);
printf("请输入一组数据,以0做为结束符:\n");
scanf("%d",&x);
while (x)
{
L->a[L->size++]=x;
scanf("%d",&x);
}
}
void print(sequence_list L)
{
int i;
for (i=0;i<L.size;i++)
{
printf("%5d",L.a[i]);
if ((i+1)%10==0)
printf("\n");
}
printf("\n");
}
void insertx(sequence_list *L,int i,datatype x) //修改
{
int j;
if (i < 1 || i > L->size + 1) return;
for (j = L->size; j > i - 1; j--){
L->a[j] = L->a[j - 1];
}
L->a[j]=x;
L->size++;
}
void deletex(sequence_list *L,datatype x) //修改
{
int i,j;
for (i = 0;i < L->size; i++){
if (L->a[i] == x){
for (j = i;j < L->size - 1; j++){
L->a[j] = L->a[j + 1];
}
L->size--;
return;
}
}
if (i == L->size)
printf("顺序表中存放数据中值为%d的结点不存在!\n",x);
}
void insert_xy(sequence_list *L,datatype x,datatype y) //修改
{
int i,j;
for (i = 0;i < L->size; i++){
if (L->a[i] == x){
for (j = L->size; j > i + 1; j--){
L->a[j] = L->a[j - 1];
}
L->a[j] = y;
L->size++;
return;
}
}
if (i == L->size)
printf("顺序表中存放数据中值为%d的结点不存在!\n",x);
}
int main()
{
sequence_list L;
datatype x,i;
input(&L);
print(L);
printf("请输入待插入的位置,及待插入元素值(i,x):");
scanf("%d%d",&i,&x);
insertx(&L,i,x);
printf("第%d个位置插入元素%d之后的顺序表为:\n",i,x);
print(L);
printf("请输入待删除元素数据值:");
scanf("%d",&x);
deletex(&L,x);
printf("删除%d之后的顺序表为:\n",x);
print(L);
printf("在当前存放数据的值45后插入一个值为54的整形数据:\n");
insert_xy(&L,45,54);
print(L);
return 0;
}