线性表:
#include
#include
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define list_init_size 80 //初始分配存储空间
#define listincreament 10 //存储空间分配增量
初始化:
typedef struct
{
int *elem; //存储空间基址
int length; //当前长度
int listsize; //当前分配的存储容量
} SqList;//结构体定义//
int InitList_Sq(SqList *L)
{
L->elem=(int *)malloc(list_init_size*sizeof(int)); //存储分配失败
if(!L->elem)
exit(OVERFLOW); //空表长度初始化为0;
L->length=0; //存储的初始容量为初始分配空间
L->listsize=list_init_size;
return OK;
}
赋值:
int Input_Sq(SqList *L,int n)
{
int i, *newbase;
if(n<0) return ERROR;
if(n>L->listsize)
{
newbase=(int *)malloc(listincreament*sizeof(int));
if(!newbase) exit(OVERFLOW);
L->elem=newbase;
L->listsize+=listincreament;
}
//如果输入的n大于初始化分配的空间,则需要扩大分配空间的范围//
printf("情输入元素:\n");
for(i=0;i
{
scanf("%d",&L->elem[i]);
//正式赋值,arr[i]=*(arr+i),所以L->elem[i]=*(L->elem+i)//
L->length++;
}
return OK;
}
int cha(sqlist *L,int p)
{
for(int i=0;i<=L->length;i++)
{
if((L->length)[i]==p)
/*L->length[i]=*(L->length+i)*/
{
printf("p在%d处",i);
}
return i;
}
插入:
int ListInsert_Sq(SqList *L,int i,int e)
{ //i需要满足1<=i<=ListLength_Sq(L)+1,即插入的元素是第一个元素到最后一个元素中间//
int *newbase;
int *p;
int *q;
if(i<1||i>L->length+1) return ERROR;
if(L->length>=L->listsize)
{ //当前存储空间已满,增加分配
newbase=(int *)malloc(L->elem,(L->listsize+listincreament)*sizeof(int));
//如果i超出范围则需要重新添加内存//
if(!newbase) exit(OVERFLOW); //存储分配失败
for(int j=0;jlength;j++)
{ newbase[j]=L->elem[j]; }
L->elem=newbase; //新基址
L->listsize+=listincreament; //增加存储容量
}
//开始后移//
q=&(L->elem[i-1]); //q为插入的位置(注意数组的下标是从0开始计数)
for(p=&(L->elem[L->length-1]);p>=q;p--)
*(p+1)=*p; //插入位置及之后的元素后移
*q=e; //插入e
L->length+=1; //表长增1
return L->length;
}
插入一个元素应该先将分配内存扩大一个元素位置,然后用指针p指向最后一个元素,q指向插入的位置,q位置及以后的元素往后移一个位置,从最后一个开始移,每转移一个将p向前推进,当p和q相遇时执行最后一个元素的后移。全部转移后在此时的q处插入元素即可。
删除:
同理,删除操作是先将删除的地方标为指针q,进行删除操作,然后将q后的元素前移就可以了。
取值:
取第i个元素的数据,即取L->elem[i]。
————————————————
学习借鉴的原文链接:https://blog.csdn.net/qq_20406597/article/details/80937446
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.