幻舞清风 2022-09-26 21:08 采纳率: 85.7%
浏览 31
已结题

顺序表的程序参数设计

typedef struct
{
DataType list[MaxSize];
int size;
}SeqList;
void ListInitiate(SeqList *L){
L->size=0;
}
int ListLength(SeqList L)
{
return L.size;
}
int ListInsert(SeqList *L,int i,DataType x)
{
int j;
if(L->size>=MaxSize)
{
printf("顺序表已满无法插入!\n");
return 0;
}
else if (i<0||i>L->size)
{
printf("参数i不合法!\n");
return 0;
}
else
{
for(j=L->size;j>i;j--)L->list[j]=L->list[j-1];
L->list[i+]=x;//插入x
L->size++;//元素个数加一
return 1;
}
}
int ListDelete(SeqList *L,int i,DataType *x){
int j;
if(L->size<=0){
printf("顺序表已空无元素可删!\n");
return 0;
}
else if(i<0||i>L->size-1){
printf("参数i不合法");
return 0;
}
else{
*x=L->list[i];
for(j=i+1;j<=L->size-1;j++)L->list[j-1]=L->list[j];
L->size--;
return 1;
}
}
int ListGet(SeqList L,int i,DataType *x){
if(i<0||i>L.size-1){
printf("参数i不合法!\n");
return 0;
}
else{
*x=L.list[i];
return 1;
}
}

#include<stdio.h>
#define MaxSize 100
typedef int DataType;
#include "SeqList.h"
int main(void){
SeqList myList;
int i,x;
ListInitiate(&myList);
for(i=0;i<10;i++)
ListInsert(&myList,i,i+1);
ListDelete(&myList,i,&x);
for(i=0;i<ListLength(myList);i++)
{
ListGet(myList,i,&x);
printf("%d",x);
}

}
请在如上代码中修改,使其实现在顺序表的第5个元素前处插入一个新元素“100”

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-09-27 01:13
    关注

    上面代码没什么问题,插入见主函数:

    #include<stdio.h>
    #define MaxSize 100
    typedef int DataType;
    typedef struct
    {
        DataType list[MaxSize];
        int size;
    }SeqList;
    void ListInitiate(SeqList *L){
        L->size=0;
    }
    int ListLength(SeqList L)
    {
        return L.size;
    }
    int ListInsert(SeqList *L,int i,DataType x)
    {
        int j;
        if(L->size>=MaxSize)
        {
            printf("顺序表已满无法插入!\n");
            return 0;
        }
        else if (i<0||i>L->size)
        {
            printf("参数i不合法!\n");
            return 0;
        }
        else
        {
            for(j=L->size;j>i;j--)
                L->list[j] = L->list[j-1];
            L->list[i]=x;//插入x
            L->size++;//元素个数加一
            return 1;
        }
    }
    int ListDelete(SeqList *L,int i,DataType *x){
        int j;
        if(L->size<=0){
            printf("顺序表已空无元素可删!\n");
            return 0;
        }
        else if(i<0||i>L->size-1){
            printf("参数i不合法\n");
            return 0;
        }
        else{
            *x=L->list[i];
            for(j=i+1;j<=L->size-1;j++)
                L->list[j-1]=L->list[j];
            L->size--;
            return 1;
        }
    }
    int ListGet(SeqList L,int i,DataType *x){
        if(i<0||i>L.size-1){
            printf("参数i不合法!\n");
            return 0;
        }
        else{
            *x=L.list[i];
            return 1;
        }
    }
    
    //#include<stdio.h>
    //#define MaxSize 100
    //typedef int DataType;
    //#include "SeqList.h"
    
    int main(void){
        SeqList myList;
        int i,x;
        ListInitiate(&myList);
        for(i=0;i<10;i++)
            ListInsert(&myList,i,i+1);
    
        ListInsert(&myList,5-1,100); //位置为:i - 1
    
        ListDelete(&myList,i,&x);
        
        for(i=0;i<ListLength(myList);i++)
        {
            ListGet(myList,i,&x);
            printf("%d ",x);
        }
        printf("\n");
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月27日
  • 已采纳回答 9月27日
  • 修改了问题 9月26日
  • 创建了问题 9月26日

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)