`
hpjianhua
  • 浏览: 234508 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

顺序线性表的删除算法 C语言版

阅读更多
顺序线性表的删除算法:

算法部分:

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


0
0
分享到:
评论

相关推荐

    线性表的顺序表示和插入、删除、归并C语言代码实现

    线性表的顺序表示和插入、删除、归并C语言代码实现。根据严蔚敏编的C语言版程序编写。

    线性表顺序存储运算的算法实现

    线性表的输入输出,插入删除,以及长度和置空操作。附带实验报告。

    史上最全经典数据结构算法c语言实现代码合集

    字符编辑技术(插入和删除) .txt 完数.txt 定长串.txt 实例1.txt 实例2.txt 实例3.txt 小写数字转换成大写数字1.txt 小写数字转换成大写数字2.txt 小写数字转换成大写数字3.txt 小字库DIY-.txt 小字库DIY....

    动态顺序线性表的操作.zip

    基于线性表的动态顺序存储结构,通过函数分别实现以下操作的算法。 2.实现要求:定义实现以下操作的函数 ⑴ 顺序表的建立:通过键盘输入所建立的顺序表的元素个数 n,通过随机 生成的方式生成在[A,B]之间的整数;...

    c语言数据结构算法演示(Windows版)

    在演示算法之前,需先在弹出的小窗口中输入线性表的数据元素及算法参数 i(插入或删除的位置)和 b(被插的数据元素)的值。顺序表的图示窗口在演示屏的上方,链表的图示窗口在左侧。 2. 有序表的操作 算法演示屏的...

    经典数据结构算法c语言实现代码(大全)

    字符编辑技术(插入和删除) .txt 完数.txt 定长串.txt 实例1.txt 实例2.txt 实例3.txt 小写数字转换成大写数字1.txt 小写数字转换成大写数字2.txt 小写数字转换成大写数字3.txt 小字库DIY-.txt 小字库DIY....

    数据结构-查找算法-C语言

    (1)掌握顺序查找,二分法查找和索引查找的算法思想及程序实现方法。 (2)掌握二叉排序树、AVL树的查找、插入、删除、建立算法的思想及程序实现方法。 (3)掌握散列存储结构的思想,能选择合适散列函数,实现...

    C语言版数据结构与算法分析-严蔚敏经典视频教程

    02-002线性表的顺序表示与实现、线性表的基本操作 02-003单链表的创建与操作、加工型操作、单链表合并 03-001栈的定义与应用、循环链表的定义与操作 03-002栈的应用、数制转换、括号匹配、行编辑问题、迷宫问题 03-...

    数据结构及算法C语言实现代码集[推荐下载]

    带头结点双链循环线性表.c 底层编程 效验算法 数学问题 数据结构 数组 文件程序 求进制 汉诺塔 硬币情况 逆阵 链串.c 链栈.c 链队列.c 问题算法 顺序栈.c 顺序表.c 顺序队列.c ./其它&#58; c语言窗体实例.zip 傻瓜...

    数据结构实验

    假设两个顺序线性表La和Lb分别表示两个集合A和B,如何实现A=A ∩B ? 实验2:单链表基本操作 一、 实验目的 1. 学会定义单链表的结点类型,实现对单链表的一些基本操作和具体的函数定义,了解并掌握单链表的类定义...

    【数据结构】线性表顺序表(全)测试代码用C语言C++实现动态及静态顺序表的定义、插入、删除 定义线性表节点的结构.pdf

    【数据结构】线性表顺序表(全)测试代码用C语言C++实现动态及静态顺序表的定义、插入、删除 定义线性表节点的结构.pdf

    c语言数组指定位置插入和删除-玩转C语言链表,单链表双向链表的建立遍历插入删除... 数组和链表.pdf

    c语言数组指定位置插入和删除-玩转C语言链表,单链表双向链表的建立遍历插入删除... 数组和链表.pdf

    线性表的顺序存储C++实现(类模板实现)

    使用C++类模板实现了线性表的顺序存储结构,类中包含了线性表的常用方法:向线性表中插入一个元素、删除一个元素、清空线性表、获取一个元素、获取线性表长度、获取线性表的容量等。大致实现了STL中的线性表基本功能...

    C语言版数据结构基础学习

    │ │ 2.04 顺序表之删除算法 │ │ 2.05 初识链表 │ │ 2.06 单链表的查找与插入 │ │ 2.07 单链表的删除 │ │ 9 c' n" g. d( y8 E( w p │ ├─数据结构第03章 │ │ 3.01 循环链表的插入 │ │ 3.02 循环链表...

    C语言从入门到实战-通过使用C语言来实现线性表的顺序存储

    线性表的顺序存储是指用一段连续的存储空间存储线性表中的元素,用数组来实现。在顺序存储结构中,线性表中相邻的元素在物理位置上也是相邻的。具体来说,线性表中的每个元素都存储在一个固定的数组下标位置上,数组...

    数据结构线性表--顺序表

    使用软件为dev c++,使用c语言,用计算机类书籍《数据结构》中介绍的线性表中的顺序存储结构,建立了一个学生年龄表,可以实现基本的 插入 查找 删除 遍历,各个功能函数写有注释,方便阅读。

    顺序栈的C语言实现(栈的顺序存储)

    栈是一种特殊的线性表,它只能在线性表的一端进行插入删除操作,允许插入删除的一端称为栈顶,另...既然栈也是线性表,那么栈就可以通过线性表来实现,实现顺序栈只需在顺序表的插入删除操作时,只限定在一端操作即可。

    双向链表API及C语言实现

    双向链表的API和C语言...另外还有线性表顺序存储、单链表、循环链表的C语言实现,文章及代码资源均已上传,可在专栏《数据结构与算法学习笔记》中查看,欢迎大家查看下载,如果内容有不合理的地方,欢迎大家批评指正。

    C/C++常用算法手册.秦姣华(有详细书签).rar

    虽然这些例子都是以C语言来编写的,但是算法并不局限于C语言。如果读者采用其他编程语言,例如C++、C#、VB、Java等,根据其语法格式进行适当的修改即可。 《C/C++常用算法手册 》主要定位于有一定C/C++语言编程...

Global site tag (gtag.js) - Google Analytics