『暮雨孤城』26 2022-03-16 17:58 采纳率: 33.3%
浏览 46
已结题

设顺序表递增,插入一个数之后还递增

#include<stdio.h>//设顺序表L是递增有序表,试写一算法,将x插入到L中并使L仍是递增有序表。
#include<stdlib.h>
#include<assert.h>

#define INIT_SIZE 100 //顺序表存储空间的初始分配量

typedef int Elemtype;
typedef struct
{
Elemtypeelem;//定义数组名为elem 线性表占用空间为100
int length;//当前长度
int Listsize;//当前分配的存储容量(以sizeof(ElemType)为单位)
}Sqlist;
void InitSqlist(Sqlist
L);
void CreateSqlist(SqListL);
void InsertSqList(SqList
L,Elemtype e);
void PrintSqlist(SqList*L);

int main()
{
Elemtype e;
SqList L;
InitSqList(&L);
CreateSqlist(&L);
printf("请输入插入元素的数据:\n");
scanf("%d",&e);
InsertSqList(&L,e);
printf(",插入后顺序表:\n");
PrintSqlist(&L);
return 0;
}

//有序顺序表的初始化
void InitSqlist(SqlistL)
{
L->elem=(Elemtype
)malloc(sizeof(Elemtype)*INIT_SIZE);
assert(L->elem!=NULL);
L->length=0;
L->Listsize=INIT_SIZE;
}

//有序顺序表的建立
void CreateSqlist(SqList*L)
{
int i,n;
printf("请输入顺序表表长:\n");
scanf("%d",&n);
fflush(stdin);
arrest(n<=L->Listsize);
L->length=n;
printf("输入要填入表中的数据:\n");
for(i=0;i<n;i++)
{
scanf("%d",&L->elem[i]);
}
}

//有序表的插入
void InsertSqList(SqList*L,Elemtype e)
{
int i;
assert(L->length < L->listsize);//创建的表长大于或等于初始分配量,则无法插入,停止程序
for(i=L->length;i>0&&L->elem[i-1]>e;i--)
L->elem[i]=L->elem[i-1];
L->elem[i]=e;
L->length++;
}

//顺序表显示函数
void PrintSqlist(SqList*L)
{
int i;
for(i=0;ilength;i++)
{
printf("%d",L->elem[i]);
}
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 3月24日
    • 创建了问题 3月16日

    悬赏问题

    • ¥15 求高通平台Softsim调试经验
    • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
    • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
    • ¥15 栅极驱动低侧烧毁MOSFET
    • ¥30 写segy数据时出错3
    • ¥100 linux下qt运行QCefView demo报错
    • ¥50 F1C100S下的红外解码IR_RX驱动问题
    • ¥20 基于matlab的航迹融合 航迹关联 航迹插补
    • ¥15 用Matlab实现图中的光线追迹
    • ¥15 联想笔记本开机出现系统更新界面