1-2删除运算 int delsq(int i, int VI l, int*p) /在线性表中删除第i个元素 int n,J; n=少p if (i<ili>n i printf( this element is not in the list n"); return(0); 1 else{for〔j=i;jnj++)Ⅴj1Ⅴj;被删除元素之后的元素左移 /表长减1*/ return(1); }
1- 2删除运算 int delsq(int i , int V[ ], int *p) { /*在线性表V中删除第i 个元素*/ int n,j; n=*p; if(i<1‖i>n) { printf("This element is not in the list \n"); return (0);} else { for (j=i;j<n;j++) V[j-1]=V[j];/*被删除元素之后的元素左移*/ *p=--n; /*表长减1*/ return (1); } }
2.线性表的链式存储结构 将线性表的元素放到一个具有头指针的链表中,链表 中每个结点包含数据和指针城。 数据存放数据,指针域存放后继结点的地址最后 逻辑上相邻的数据元素在内存中 存储地址 数据域 指针域 L工 7 QIAN 13 头指针H SUN NLL 31 WANG 25 WU 37 31 ZHAO 37 ZHENG 19 43 ZHOU 25
2 . 线性表的链式存储结构 将线性表的元素放到一个具有头指针的链表中,链表 中每个结点包含数据域和指针域。 数据域存放数据,指针域存放后继结点的地址,最后 一个结点的指针域为空。逻辑上相邻的数据元素在内存中 的物理存储空间不一定相邻
存储地址 数据域 指针域 L工 43 QIAN 13 头指针H 13 SUN 19 31 WANG 25 37 ZHAO 37 ZHENG 19 43 ZHOU 25 上图的线性表为 ZHAO, QIAN, SUN, LI, ZHOU, WU, ZHENG, WANG
上图的线性表为 ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG
存储地址 数据域 指针域 L工 43 QIAN 13 头指针H SUN 19 31 WANG NLL WU 37 ZHAO 37 ZHENG 19 43 ZHOU 25 线性链表表示法: ZHAO QIAN SUN L工 ZHOU WANG∧
线性链表表示法:
链式存储结构的特点 插入、删除灵活方便,不需要移动结点,只要改变结 点中指针域的值即可。 适于线性表是动态麥化的不进行频繁查找操作、但 经常进行插 链表的查找只能从头指针开始顺序查找
链式存储结构的特点 插入、删除灵活方便,不需要移动结点,只要改变结 点中指针域的值即可。 适合于线性表是动态变化的,不进行频繁查找操作、但 经常进行插入删除时使用。 链表的查找只能从头指针开始顺序查找