不出所料这应该是自己写出来的代码。
首先猜猜你的想法:n, maxlength在使用时是重点。typedef struct seqList
{
int n; // 已存元素数量
int maxLength; // 能存元素的最大数量
ElemType *element;
} SeqList;
然后是:
Insert();函数,你这只是单单的实现的顺序存放,并没有真正的插入功能吧。头插, 中插,尾插。
随后我关键改动几处,自已对比的函数之间的差别。#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct seqList
{
int n; // 已存元素数量
int maxLength; // 能存元素的最大数量
ElemType *element;
} SeqList;
#define ERROR 0
#define OK 1
#define Overflow 2 //Overflow 表示上溢
#define Underflow 3 //Underflow 表示下溢
#define NotPresent 4 //Notpresent 表示元素不存在
#define Duplicate 5 //Duplicate 表示有重复元素
typedef int Status;
Status Init(SeqList *L,int mSize)
{
L->maxLength = mSize;
L->n = 0;
L->element = (ElemType*)malloc(sizeof(ElemType)*mSize); //动态生成一维数组空间
if(!L->element)
return ERROR;
return OK;
}
Status Insert(SeqList *L,int i, ElemType x)
{
if(L->n==L->maxLength) // 判断顺序表存储空间是否已满
return ERROR;
L->element[i]=x;
L->n=L->n+1;
return OK;
}
Status Output(SeqList *L)
{
int i;
if(L->n==0)
return ERROR;
for(i=0; i<L->n; i++)
printf("%d ",L->element[i]);
printf("\n");
return OK;
}
int main()
{
int i;
SeqList list;
Init(&list,10); //初始化线性表
for(i=0; i<10; i++)
Insert(&list,i,i); //线性表中插入新元素
printf("%d\n", list.n);
Output(&list);
return 0;
}
|