揭阳自助建站软件河南省住房建设厅官方网站
news/
2025/10/5 12:51:53/
文章来源:
揭阳自助建站软件,河南省住房建设厅官方网站,百度如何精准搜索,wordpress 漏洞复现文章目录 线性表动态分配的顺序存储结构链式存储 线性表
动态分配的顺序存储结构
通过分析代码#xff0c;我们发现#xff0c;要注意什么#xff1a;
要分清你的下标Insert 函数是可以用来没有元素的时候#xff0c;增加元素的Init(或者Create )函数一般只用来分配空间… 文章目录 线性表动态分配的顺序存储结构链式存储 线性表
动态分配的顺序存储结构
通过分析代码我们发现要注意什么
要分清你的下标Insert 函数是可以用来没有元素的时候增加元素的Init(或者Create )函数一般只用来分配空间等的初始化
//动态分配空间的顺序存储结构的线性表
#includestdio.h
#includestdlib.h#define Linitesize 100
#define Laddsize 10
#define OK 1
#define error 0typedef int Status;
typedef int Elemtype;
typedef struct{Elemtype * elem;int length;int listsize;
}SqList;
void Show(SqList L)
{int i;for(i0;iL.length ;i)printf(%d ,L.elem[i]);printf(\n);return ;
}
Status Create(SqList L)
{L.elem (Elemtype *)malloc(Linitesize*sizeof(Elemtype));if(!(L.elem ))return error;L.length 0;L.listsize Linitesize;return OK;
}
//在第i个元素之前插入 从1开始计数就是下标为i
Status Insert(SqList L,int i,Elemtype e)
{int j;if(i1||iL.length1 )return error;if(L.lengthL.listsize){L.elem (Elemtype *)realloc(L.elem ,(L.listsize Laddsize)*sizeof(Elemtype));if(!(L.elem ))return error;L.listsize L.listsize Laddsize;}for(jL.length-1 ;ji-1;j--)L.elem[j1] L.elem[j];L.elem[i-1] e;L.length ;return OK;}
//i为你想要删除的第几个元素
Status Delete(SqList L,int i,Elemtype e)
{int j;if(i1||iL.length )return error;e L.elem[i-1];for(ji-1;jL.length-1;j)L.elem[j] L.elem[j1];L.length --;return OK;
}int main()
{int i,j;Elemtype e;SqList L;Create(L);for(i1;i5;i)Insert(L,i,i*i); printf(输出具体数据:\n);Show(L);printf(请输入你想要删除第几个元素:\n);scanf(%d,j);Delete(L,j,e);printf(删除的数据是:%d \n,e);Show(L);return 0;
}
考点
两个有序递增的顺序表的合并 关键点可以学到什么就是分别用pa,pb,pc,来记录首地址一句话就是用辅助变量来方便操作 void Merge(Sqlist la,Sqlist lb,Sqlist lc)
//目标将原本有序递增的la,pb顺序表整合到lc ,lc认为有序递增的
{pa la.elem;pb la.elem;lc.listsize lc.length la.length lb.length;pc lc.elem (ElemType *)malloc(lc.listsize*(sizeof(ElemType)));if(!lc.elem)exit OVERFLOW;pa_last pa la.length-1;pb_last pb lb.length-1;while(papa_lastpbpb_last){if(*pa*pb) *pc *pa;else *pc *pb;}while(papa_last) *pc *pa;while(pbpb_last) *pc *pb;}顺序表优点与缺点 优点可以随便进行数据的插入与删除优点占据较少的空间 缺点需要连续的一串地址缺点在插入与删除时要移动大量的元素 链式存储 //动态分配空间的顺序存储结构的线性表
#includestdio.h
#includestdlib.h#define Linitesize 100
#define Laddsize 10
#define OK 1
#define error 0typedef int Status;
typedef int Elemtype;typedef struct LNode{struct LNode * next;Elemtype data;
}LNode,*LinkList;
int Length(LinkList L)
{int sum0;while(L-next !NULL){sum;LL-next ;}return sum;
}
//尾插法
Status Create(LinkList L,Elemtype e)
{LinkList p L;//开始p 指向头结点 while(p-next !NULL )//找到最后一个结点 pp-next ;LinkList temp (LNode *)malloc(sizeof(Elemtype));if(!temp) return error;temp-data e;//由于p 指向最后一个结点那么p-next 进行赋值实际上会改变原来的数据temp-next p-next ;p-next temp;return OK;}
Status Show(LinkList L)
{LinkList p L-next ;while(p !NULL){printf(%d ,p-data );p p-next ;}printf(\n);return OK;
}
//在第i 个元素之前插入 确保不超过范围
Status Insert(LinkList L,int i,Elemtype e)
{if(i1||iLength(L)1)return error;LinkList p L;//指向头结点//找到第i-1个结点int j ;for(j1;ji;j)p p-next ; LinkList temp (LNode * )malloc(sizeof(LNode));if(!temp) return error;temp-data e;temp-next p-next ;p-next temp;return OK;
}
Status Delete(LinkList L,int i,Elemtype e)
{//删除第i 个元素并返回其值if(i1||iLength(L))return error;//找到第i-1个结点int j;LinkList temp L;for(j1;ji;j)temp temp-next ;e temp-next-data;temp-next temp-next-next;return OK;
}
int main()
{Elemtype e;LinkList L (LNode *)malloc(sizeof(LNode));L-next NULL;for(int i 1;i 5;i)Create(L,i);Show(L);Insert(L,2,10);Show(L);Delete(L,3,e);Show(L);printf(%d \n,e);return 0;}
应用
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928272.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!