首页 > 代码库 > 数据结构之第二章线性表
数据结构之第二章线性表
1 线性表的顺序存储
(1)线性表的顺序存储特点:逻辑上相连的元素,物理位置也相连。可随机访问表中元素,表中的存储位置可以用一个简单的,直观的公式表示,但是插入和删除都要移动大量的元素,效率不高,适合元素个数变化不大的情况,此时,如数据元素按照一定的顺序存储,则称为顺序存储的有序表,简称为 静态表。
(2)线性表的动态分配顺序存储结构
typedef struct{Elemtype *elem; //存储空间起始地址int length; //当前长度 int listsize; //当前分配容量}Sqlist;
(3)顺序表的基本操作-----(1)顺序表的插入
int listlink(PNODE head,int i,int e){//在顺序表head的第i个元素之前插入新的元素e if(i<0||i>=head.length) //插入位置不合法 return 0; if(head.length>=head.listsize)//当前存储空间已满,增加空间 { PNODE newbase=(PNODE)malloc(sizeof(NODE));//创建一个新的结点 if(newbase==NULL)exit(-1);//存储分配失败 head.elem=newbase; head.listsize++;//这里有毛病,应该改改 }//插入位置及之后的元素后移 for(j=head.length-1;j>=i;j--){ head.elem[j+1]=head.elem[j]; }//这个的作用是找到它插入位置后一个元素 head.elem[i]=e;//插入e ++head.length;//表长度增加1。 return 1;}
(2)顺序表的删除
int listdelete(PNODE head,int i,PNODE phead){//head是这个链表的表名字,i是位置,phead是这个删除的节点的地址 if(i<0||i>=head.length) return 0; phead=head.elem[i];//被删除的元素赋予给e for(j=i+1;j<head.length;j++)//被删除元素之后的与元素左移 { head.elem[j-1]=head.length[j];} --head.length;//表的长度-1 retun 1;}
数据结构之第二章线性表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。