参考书:王道考研数据结构
//函数的声明
SqList InitList(l); //初始化一个顺序表
void PrintfList(SqList l); //输出表
int GetElem(SqList l,int i); //按位查找
int LocateElem(SqList l,int e); //按值查找
int Length(SqList l); //求表长
int Empty(SqList l); //判空
SqList change_data(SqList l,int old_data,int new_data);//替换old_data为新元素new_data
SqList change_weizhi(SqList l,int pos,int n_elem); //按pos位置替换为n_elem的值
SqList ListInsert(SqList l,int q,int e); //在pos位置新插入数据e
SqList ListDelete(SqList l,int pos); //删除pos位置上的数据
void DestroyList(SqList l); //销毁表
代码:
#include#include #define Size 5 //顺序表的结构定义 typedef struct{ int *data; //定义一个动态数组data int size; //顺序表存储容量 int length; //顺序表长度 }SqList; //函数的声明 SqList InitList(l); //初始化一个顺序表 void PrintfList(SqList l); //输出表 int GetElem(SqList l,int i); //按位查找 int LocateElem(SqList l,int e); //按值查找 int Length(SqList l); //求表长 int Empty(SqList l); //判空 SqList change_data(SqList l,int old_data,int new_data);//替换old_data为新元素new_data SqList change_weizhi(SqList l,int pos,int n_elem); //按pos位置替换为n_elem的值 SqList ListInsert(SqList l,int q,int e); //在pos位置新插入数据e SqList ListDelete(SqList l,int pos); //删除pos位置上的数据 void DestroyList(SqList l); //销毁表 int list[Size]={5,2,1,13,14}; int main(){ SqList l; //初始化顺序表 int pos=0; //初始化位置 int Locate_elem=13; //初始化查找值为13 l=InitList(); //调用函数InitList创建一个顺序表l printf("创建的顺序表为:n"); PrintfList(l); //调用函数PrintfList输出l表 printf("-------------------------------------------------------------------------n"); printf("按位查找第三个位置的元素为n%dnn",GetElem(l,3)); printf("-------------------------------------------------------------------------n"); printf("按值查找查找值为1的元素的位置是n%dnn",LocateElem(l,1)); printf("-------------------------------------------------------------------------n"); l = change_data(l,5,100); printf("将5改为100得到新的顺序表为n"); PrintfList(l); //调用函数PrintfList输出l表 printf("-------------------------------------------------------------------------n"); l = change_weizhi(l,2,520); printf("将2号位置上的值改为520得到新的顺序表为n"); PrintfList(l); //调用函数PrintfList输出l表 printf("-------------------------------------------------------------------------n"); Empty(l); printf("nn"); printf("-------------------------------------------------------------------------n"); l = ListInsert(l,2,99); printf("将2号位置后插入一个新元素99得到新的顺序表为n"); PrintfList(l); printf("nn"); printf("-------------------------------------------------------------------------n"); l = ListDelete(l,2); printf("将6号位置后的元素删除得到新的顺序表为n"); PrintfList(l); printf("nn"); printf("-------------------------------------------------------------------------n"); printf("n销毁顺序表"); DestroyList(l); } SqList InitList(void) { SqList l; //初始化l int i; //i为for循环的计数器 l.data=(int*)malloc(Size*sizeof(int)); //动态申请空间 if(!l.data) //判断申请是否成功 { printf("申请内存失败!n"); exit(0); //失败则推出 } for(i=0;i l.length+1){ printf("没有该位置,无效"); } if(l.length>=l.size){ l.data = (int *)realloc(l.data,(l.size+1)*sizeof(int)); if(!l.data){ printf("动态内存申请失败n"); exit(0); } l.size+=1; } l.length+=1; for(i=l.length-1;i>=q-1;i--) { l.data[i+1]=l.data[i]; } l.data[q-1]=e; return l; } SqList ListDelete(SqList l,int pos) { int i; if(pos<1||pos>l.length) { printf("没有该元素"); } for(i=pos;i 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)