线性表之顺序存储结构
来源:互联网 发布:linux系统解压缩文件 编辑:程序博客网 时间:2024/05/01 02:58
线性表的顺序存储是指用一组地址连续的存储单元一次存储线性表的数据元素。在C语言中,可以使用动态数组来实现线性表的顺序存储。
定义:
#define MAXSIZE 100typedef struct node{ //线性表结构定义 int data[MAXSIZE]; //线性表数据 int length;//长度}List,*PList;
初始化:
Plist init_list(){ Plist pl; pl=(PList)malloc(sizeof(List)); if(pl) pl->length=0; return pl;}
生成线性表:
void creat_list(PList pl,int a[],int n){ int len,i; len=pl->length; for(i=0;i<n;i++) if(len+i<MAXSIZE) { pl->data[len+i]=a[i]; pl->length++; }}
查找元素:
int locate_L(List l,int x){int i=0;while(i<L.length && L.data[i] !=x)i++;if(i>=L->length )</span> retutn 0;else return(i+1);}
插入元素:插入元素时会可能会改变线性表的首地址,所以应用地址作形形参
int insert_L(List &L,int i,int x) //用线性表L的地址作形参{int j;if(!&L){printf ("表不存在");return(-2);}if (L.length >=MAXSIZE ){printf ("表溢出");return(-1);}if (i<1||i>L.length +1){printf ("插入位置不合法");return(-1);}for(j=L.length-1;j>i;j--)L.data[j+1]=L.data [j];L.data[i-1]=x;L.length++;return(1);}
删除元素:在地址可能改变时也可采用指针传递
int delete_L(PList pl,int i) //用线性表指针作形参{int j;if(!pl){printf ("表不存在");return(-2);}if(i<1||i>pl->length ){printf("删除位置不合法");return (-2);}for(j=i-1;j<pl->length ;j++)pl->data [j]=pl->data [j+1];pl->length --;return (-1);}
求两个线性表的交集和并集:A∩B、A∪B
void inter_merge(PList La,PList Lb,int m){int i;for(i=0;i<La->length ;i++){if(!locate_L (Lb,La->data [i]) && m) //m=1 时求A与B的交集,将A在B中不存在的元素删除,最后A=A∩Bdelete_L (La,i+1);if(!locate_L (Lb,La->data [i]) && !m) //m=0 时求A与B的并集,将A在B中不存在的元素插入B,最后B=A∪Binsert_L (*Lb,Lb->length+1 ,La->data [i]);}}
应用
void main(){int i;int a[5]={1,2,3,4,5};PList pl1,pl2;pl1=init_L ();//初始化pl2=init_L ();create_L (pl1,a,5);//生成create_L (pl2,a,5);insert_L(*pl1,1,6);//在线性表pl1的位置1插入元素6delte_L(pl2,2);//删除线性表pl2在位置2的元素inter_merge(pl1,pl2,1);//求两个线性表的交集,结果存在pl1中for(i=0;i<pl1->length;i++)printf("%d\t",pl1->data[i]);//结果应为1 3 4 5}
1 0
- 线性表之顺序表存储结构
- 数据结构:线性表之顺序存储结构
- 线性表之顺序存储结构
- 数据结构-线性表之顺序存储结构
- 线性表之顺序存储结构
- 【数据结构】线性表之顺序存储结构
- 线性表之顺序存储结构
- 数据结构之顺序存储结构线性表
- 数据结构:线性表之顺序存储结构
- C# 线性表之顺序存储结构
- 线性表之顺序存储结构
- 线性表之顺序存储结构
- 线性表之顺序存储结构
- 线性表之顺序存储结构和链式存储结构
- 线性表(一)之线性表的顺序存储结构
- 【线性表】顺序存储结构之:顺序表
- 线性表-顺序存储结构之顺序表
- 线性表之顺序存储结构(顺序表)
- 二叉树的中序遍历
- C++中STL库中的assign函数
- 沉浸式状态栏Immersive Mode & 透明式状态栏Translucent Bars
- Oracle-33-变量%type、变量%rowtype、记录类型、记录表类型
- 获取文件的属性,时间等等
- 线性表之顺序存储结构
- Codeforces Round #308 (Div. 2) D. Vanya and Triangles (判断三角形数量)
- 监听NSBlockOPeration执行完毕
- 复习redis(二)
- 删除NSOperationQueue内所有Operation
- 每天laravel-20160716|OutputStyle
- mysql 添加列,修改列,删除列。
- 用友u8反记账反结账如何处理
- 系统例程(Utility)及常用工具