Boring1031 发表于 2022-10-2 14:16:15

C语言顺序线性表

本帖最后由 Boring1031 于 2022-10-2 14:17 编辑

大佬帮我看看怎么实现这个程序吧{:10_262:}
#include "seqlist.h"

/* 编写顺序表删除算法,删除第2题的顺序表中最大元素的值(若有多个,则删除第一个),
输出删除的元素值,并输出删除后新的顺序表中所有元素。*/

int main()
{
        SeqList L;
        int i,elem,ins,data;
        time_t t;
       
        SeqInput(&L);
        SeqPrint(&L);
       
        srand((unsigned) time(&t));
        data=rand()%39+60;
                                           
        printf("请输入要插入整数的位置:\n");       
        scanf("%d",&ins);                                                                                             

        if(InsList(&L,ins,data))                      
           SeqPrint(&L);                                
        else
           printf("插入出错!\n");
          
//        Find(&L);
                                               
        printf("请输入要删除整数的位置:\n");       
        scanf("%d",&ins);
        if(DelList(&L,ins,&elem))
        {
          printf("成功删除元素%d",&elem);
          SeqPrint(&L);
        }
        else
          printf("删除失败!");
       
        SeqPrint(&L);
       
        return 0;
}

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

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define ElemType int       
#define MAXSIZE 100   

typedef struct
{
        ElemType elem;
        intlast;   
} SeqList;

int InsList(SeqList *L,int i,ElemType e);

intDelList(SeqList *L,int i,ElemType *e);

void SeqInput(SeqList *L);

void SeqPrint(SeqList *L);

#include "seqlist.h"

int InsList(SeqList *L, int i,ElemType e)
{
        int k;
        if(i<1||(i>L->last+2))                               
        {
                printf("插入位置i不合法");
                return(ERROR);
        }
        if(L->last>=MAXSIZE-1)                               
        {
                printf("表已满,无法插入");
                return(ERROR);
        }
       
        for(k=L->last;k>=i-1;k--)                       
        {
                L->elem=L->elem;
        }
        L->elem=e;                                               
        L->last++;                                                       
        return(OK);
}


void SeqInput(SeqList *L)
{
        int r,i;
        printf("请输入元素个数(100以内):");
        scanf("%d",&r);
        L->last=-1;                                       
        printf("请输入线性表元素值,回车分隔:\n");
        for(i=0;i<=r-1;i++)
        {
                scanf("%d",&L->elem);
                L->last++;
        }
}

void SeqPrint(SeqList *L)
{
        printf("当前线性表中数据为:\n");
        int i;
        for(i=0;i<=L->last;i++)
                printf("%d",L->elem);
        printf("\n");
}

intDelList(SeqList *L,int i,ElemType *e)
{   
        int k;
    if((i<1)||(i>L->last+1))   
    {   
                printf("删除位置不合法!");
            return(ERROR);
        }
    *e= L->elem;                  
    for(k=i;k<=L->last;k++)
         L->elem= L->elem;   
    L->last--;       
    return(OK);
}

//void Find(SeqList *L)
//{
//        int i;
//        for(i=L->last;i>=0;i--)
//        {
//                if(L->elem<L->elem)
//                {
//                        L->elem=L->elem;
//                }
//        }
//        L->last--;
//}
页: [1]
查看完整版本: C语言顺序线性表