顺序线性表的删除算法:
算法部分:
Status ListDelete_Sq ( SqList &L, int i, ElemType &e ) {
// 在顺序线性表L中删除第 i 个元素,并用 e 返回其值,1≤i ≤ListLength_Sq (L)
if ( ( i < 1 ) || ( i > L.length ) ) return ERROR; // i 值不合法
p = &( L.elem [ i-1 ] ); // p 为被删除元素的位置
e = *p; // 被删除元素的值赋给 e
q = L.elem + L.length – 1; // 表尾元素的位置
for ( ++p; p <= q; ++p ) *(p-1) = *p; // 被删除元素之后的元素左移
--L.length; // 表长减 1
return OK;
} // ListDelete_Sq
C程序源代码部分:
//ListDelete_Sq.cpp
//Delete the NO.i Element of Sq_List and get the value
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
//#define LIST_INIT_LENGTH 10 //LIST_INIT_LENGTH is the Init_Define_Length of Sq_List
//int array[LIST_INIT_LENGTH]={5,8,12,18,25,30,37,46,51,89};
//array use to assign init value of SqList
#define ElemType int
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct
{ int *elem;
int length;
int listsize;
}SqList;
int InitList_Sq(SqList &L) //InitList_Sq() function
{ //Inititial a Sq_List
L.elem=(int *)malloc(LIST_INIT_SIZE *sizeof(int));
if (!L.elem) return(0);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return(1);
}//end of InitList_Sq() function
void ListDelete_Sq(SqList &L,int i, int &e) //ListDelete_Sq() function
{
int *p,*q;
if((i<1)||(i>L.length))
{ cout<<i<<" is OverFlow !"<<endl;
exit(0);
}
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for (++p;p<=q;++p)
*(p-1)=*p;
--L.length;
cout<<"Success to Delete Sq_list !"<<endl;
}//end of ListDelete_Sq() function
void main() //main() function
{
SqList L;
int e;
int i,j;
//L.elem=array;
//L.length=LIST_INIT_LENGTH;
cout<<"ListDelete_Sq.cpp"<<endl<<"================="<<endl<<endl;
InitList_Sq(L);
cout<<"Please input the Length of Demo SqList L: <eg. 5> ";
cin>>L.length;
cout<<"Please input the data of Demo SqList L: <eg. {34,54,30,2,40,...}> "<<endl;
for(j=0;j<L.length;j++)
cin>>L.elem[j];
cout<<endl;
cout<<"Success to create a SqList:"<<endl;
cout<<"Please input the NO.i element of Sq_List to delete: <eg. 3> ";
cin>>i;
ListDelete_Sq(L,i,e);
cout<<"The SqList After Delete is: ";
for(j=0;j<L.length;j++)
cout<<L.elem[j]<<" ";
cout<<endl<<"...OK...!"<<endl;
getch();
}//end of main() function
分享到:
相关推荐
线性表的顺序表示和插入、删除、归并C语言代码实现。根据严蔚敏编的C语言版程序编写。
线性表的输入输出,插入删除,以及长度和置空操作。附带实验报告。
字符编辑技术(插入和删除) .txt 完数.txt 定长串.txt 实例1.txt 实例2.txt 实例3.txt 小写数字转换成大写数字1.txt 小写数字转换成大写数字2.txt 小写数字转换成大写数字3.txt 小字库DIY-.txt 小字库DIY....
基于线性表的动态顺序存储结构,通过函数分别实现以下操作的算法。 2.实现要求:定义实现以下操作的函数 ⑴ 顺序表的建立:通过键盘输入所建立的顺序表的元素个数 n,通过随机 生成的方式生成在[A,B]之间的整数;...
在演示算法之前,需先在弹出的小窗口中输入线性表的数据元素及算法参数 i(插入或删除的位置)和 b(被插的数据元素)的值。顺序表的图示窗口在演示屏的上方,链表的图示窗口在左侧。 2. 有序表的操作 算法演示屏的...
字符编辑技术(插入和删除) .txt 完数.txt 定长串.txt 实例1.txt 实例2.txt 实例3.txt 小写数字转换成大写数字1.txt 小写数字转换成大写数字2.txt 小写数字转换成大写数字3.txt 小字库DIY-.txt 小字库DIY....
(1)掌握顺序查找,二分法查找和索引查找的算法思想及程序实现方法。 (2)掌握二叉排序树、AVL树的查找、插入、删除、建立算法的思想及程序实现方法。 (3)掌握散列存储结构的思想,能选择合适散列函数,实现...
02-002线性表的顺序表示与实现、线性表的基本操作 02-003单链表的创建与操作、加工型操作、单链表合并 03-001栈的定义与应用、循环链表的定义与操作 03-002栈的应用、数制转换、括号匹配、行编辑问题、迷宫问题 03-...
带头结点双链循环线性表.c 底层编程 效验算法 数学问题 数据结构 数组 文件程序 求进制 汉诺塔 硬币情况 逆阵 链串.c 链栈.c 链队列.c 问题算法 顺序栈.c 顺序表.c 顺序队列.c ./其它: c语言窗体实例.zip 傻瓜...
假设两个顺序线性表La和Lb分别表示两个集合A和B,如何实现A=A ∩B ? 实验2:单链表基本操作 一、 实验目的 1. 学会定义单链表的结点类型,实现对单链表的一些基本操作和具体的函数定义,了解并掌握单链表的类定义...
【数据结构】线性表顺序表(全)测试代码用C语言C++实现动态及静态顺序表的定义、插入、删除 定义线性表节点的结构.pdf
c语言数组指定位置插入和删除-玩转C语言链表,单链表双向链表的建立遍历插入删除... 数组和链表.pdf
使用C++类模板实现了线性表的顺序存储结构,类中包含了线性表的常用方法:向线性表中插入一个元素、删除一个元素、清空线性表、获取一个元素、获取线性表长度、获取线性表的容量等。大致实现了STL中的线性表基本功能...
│ │ 2.04 顺序表之删除算法 │ │ 2.05 初识链表 │ │ 2.06 单链表的查找与插入 │ │ 2.07 单链表的删除 │ │ 9 c' n" g. d( y8 E( w p │ ├─数据结构第03章 │ │ 3.01 循环链表的插入 │ │ 3.02 循环链表...
线性表的顺序存储是指用一段连续的存储空间存储线性表中的元素,用数组来实现。在顺序存储结构中,线性表中相邻的元素在物理位置上也是相邻的。具体来说,线性表中的每个元素都存储在一个固定的数组下标位置上,数组...
使用软件为dev c++,使用c语言,用计算机类书籍《数据结构》中介绍的线性表中的顺序存储结构,建立了一个学生年龄表,可以实现基本的 插入 查找 删除 遍历,各个功能函数写有注释,方便阅读。
栈是一种特殊的线性表,它只能在线性表的一端进行插入删除操作,允许插入删除的一端称为栈顶,另...既然栈也是线性表,那么栈就可以通过线性表来实现,实现顺序栈只需在顺序表的插入删除操作时,只限定在一端操作即可。
双向链表的API和C语言...另外还有线性表顺序存储、单链表、循环链表的C语言实现,文章及代码资源均已上传,可在专栏《数据结构与算法学习笔记》中查看,欢迎大家查看下载,如果内容有不合理的地方,欢迎大家批评指正。
虽然这些例子都是以C语言来编写的,但是算法并不局限于C语言。如果读者采用其他编程语言,例如C++、C#、VB、Java等,根据其语法格式进行适当的修改即可。 《C/C++常用算法手册 》主要定位于有一定C/C++语言编程...