#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 4
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType *elem; //存储机制
int length; //当前线性表的长度
int listsize; //当前分配的存储容量
}Sqlist;
Status Init_List(Sqlist *L)
{
L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem) return -2;
L->length=0;
L->listsize=LIST_INIT_SIZE;
printf("初始化成功\n");
return 1;
}
Status List_Insert(Sqlist *L,int i,ElemType e)
{
if(i<1||i>L->length+1)
return -1;
if(L->length>=L->listsize)
{
ElemType *newbase=(ElemType*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) return -1;
L->elem=newbase;
L->listsize+=LISTINCREMENT;
}
ElemType *q=&(L->elem[i-1]);
ElemType *p=&(L->elem[L->length-1]);
for(;p>=q;--p) *(p+1)=*p;
*q=e;
++L->length;
printf("插入成功!\n");
return 1;
}
Status List_Delete(Sqlist *L,int i,ElemType e)
{
if(i<1||i>L->length)
return -1;
ElemType *q=&(L->elem[i-1]);
e=*q;
ElemType *p=&(L->elem[L->length-1]);
for(++q;p>=q;--p) *(p-1)=*p;
--L->length;
printf("删除成功!\n");
return 1;
}
void Print(Sqlist *L)
{
int i;
for(i=0;i<L->length;i++)
printf("%d\n",L->elem[i]);
}
int main()
{
Sqlist L;
ElemType e;
Init_List(&L);
int i;
for(i=1;i<10;i++)
{
List_Insert(&L,1,i);
}
Print(&L);
List_Delete(&L,1,e);
return 0;
}
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 4
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType *elem; //存储机制
int length; //当前线性表的长度
int listsize; //当前分配的存储容量
}Sqlist;
Status Init_List(Sqlist *L)
{
L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem) return -2;
L->length=0;
L->listsize=LIST_INIT_SIZE;
printf("初始化成功\n");
return 1;
}
Status List_Insert(Sqlist *L,int i,ElemType e)
{
if(i<1||i>L->length+1)
return -1;
if(L->length>=L->listsize)
{
ElemType *newbase=(ElemType*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) return -1;
L->elem=newbase;
L->listsize+=LISTINCREMENT;
}
ElemType *q=&(L->elem[i-1]);
ElemType *p=&(L->elem[L->length-1]);
for(;p>=q;--p) *(p+1)=*p;
*q=e;
++L->length;
printf("插入成功!\n");
return 1;
}
Status List_Delete(Sqlist *L,int i,ElemType e)
{
if(i<1||i>L->length)
return -1;
ElemType *q=&(L->elem[i-1]);
e=*q;
ElemType *p=&(L->elem[L->length-1]);
for(++q;p>=q;--p) *(p-1)=*p;
--L->length;
printf("删除成功!\n");
return 1;
}
void Print(Sqlist *L)
{
int i;
for(i=0;i<L->length;i++)
printf("%d\n",L->elem[i]);
}
int main()
{
Sqlist L;
ElemType e;
Init_List(&L);
int i;
for(i=1;i<10;i++)
{
List_Insert(&L,1,i);
}
Print(&L);
List_Delete(&L,1,e);
return 0;
}