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]