`
hpjianhua
  • 浏览: 240924 次
  • 性别: 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语言中的实现及相关算法。 1. **线性表的定义与特性**:线性表是一种线性结构,每个元素有一个前驱元素和一个后继元素,除了第一个元素没有前驱,最后一个元素没有后继。这种...

    C语言实现的顺序线性表

    本篇文章将深入探讨如何使用C语言来实现顺序线性表,包括其基本操作,如创建、插入数据、获取数据、删除数据、获取存放的数据量、清空线性表以及销毁线性表。 顺序线性表是由一组具有相同类型元素构成的序列,这些...

    线性表所有算法

    在本压缩文件中,包含了多种线性表实现的算法,覆盖了单链表、循环链表、顺序表以及队列等核心内容。下面将对这些知识点进行详细的阐述。 1. **单链表**: - 单链表是一种动态数据结构,每个节点包含数据和指向下...

    数据结构C语言版线性表算法2.4-数据结构c语言版严蔚敏顺序线性表12个基本操作及算法的实现... 定义线性表节点的结构.pdf

    在这个场景中,我们关注的是C语言实现的顺序线性表,由严蔚敏教授的经典教材《数据结构》中的内容作为指导。顺序线性表是指线性表的元素在内存中是连续存储的,便于进行快速访问。 首先,我们需要了解线性表的节点...

    线性表的合并/c语言

    此程序采用单链表作为线性表的实现方式,它是一种动态数据结构,允许在运行时添加或删除元素。 首先,让我们了解链表的基本概念。链表不同于数组,它的元素不是在内存中连续存储的。每个链表节点包含两部分:数据域...

    c语言数据结构线性表实验(包括顺序表和链表)

    在这个"C语言数据结构线性表实验"中,我们将深入探讨两种实现线性表的方法:顺序表和链表。 1. **顺序表**: - **定义**:顺序表是将数据元素存储在一块连续的内存区域中,每个元素都有一个固定的索引位置。 - **...

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

    总结来说,这个压缩包文件可能包含了一系列关于如何使用C语言实现线性表顺序表示的插入、删除和归并操作的代码示例。这些代码可以帮助我们理解线性表的底层实现原理,并学习如何在实际编程中有效地处理线性表操作。...

    《数据结构与算法(C语言版)》课后习题答案.pdf

    《数据结构与算法(C语言版)》是一本深入讲解数据结构和算法的教材,课程的课后习题提供了丰富的实践机会,帮助学习者巩固理论知识并提升编程技能。以下是部分习题答案的关键知识点: 1. **数据结构概述** - 数据...

    线性表基本操作 C语言

    在计算机科学中,线性表可以采用顺序存储或链式存储两种方式。在这个问题中,我们关注的是链式存储,具体是单链表的实现,用C语言编写。 单链表是一种线性表的链式存储结构,每个节点包含数据域和指针域,指针域...

    数据结构 线性表实验代码 C语言 数组

    因此,当线性表需要插入或删除元素时,如果数组已满或不满,可能需要重新分配内存,这在C语言中通常涉及指针和动态内存管理。 实验代码"SqList_C_array"中的"SqList"很可能代表顺序表(Sequential List),这是...

    数据结构线性表(C语言版)

    在C语言中实现线性表,通常使用数组或链表作为底层数据组织方式。下面我们将深入探讨线性表的相关知识点。 **一、线性表的基本操作** 1. **查找**:在线性表中查找某个特定元素,通常有两种方法。对于顺序存储...

    数据结构中的线性表课件,C语言

    在实际应用中,线性表的链式存储结构特别适合动态变化大的场景,因为插入和删除操作只需改变相邻节点的指针,而顺序存储结构在插入和删除时可能需要移动大量元素。而在空间利用率和访问效率方面,顺序存储结构通常...

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

    本话题将深入探讨线性表的顺序存储结构及其在C语言中的算法实现,包括线性表的输入输出、插入、删除以及长度和置空操作。 1. **线性表的顺序存储结构** 在顺序存储结构中,线性表的元素在内存中以数组的形式存储,...

    《数据结构与算法(C语言版)》课后习题答案.docx

    本文档为《数据结构与算法(C语言版)》课后习题答案,涵盖了数据结构和算法的基础知识点,包括数据元素、数据项、集合结构、线性结构、树形结构、图形结构、顺序存储、链式存储、有穷性、确定性、可行性、输入、输出...

    线性表_线性表_

    线性表具有顺序特性,即每个元素都有一个前驱元素和一个后继元素,除了第一个元素没有前驱,最后一个元素没有后继。 ### 线性表的定义 1. **基本概念**:线性表中的元素按照位置关系依次排列,可以通过下标进行访问...

    线性表通信录【c语言实现】.pdf

    该系统利用顺序存储结构来组织和管理数据,适用于在校大学生学习数据结构与算法时进行实践操作。以下是文档中提及的关键知识点: 1. 数据结构定义:程序首先定义了通讯录项的结构体(DataType),用于存储个人联系...

    c语言实现线性表的算法-数据结构算法代码实现——线性表的定义(一) 定义线性表节点的结构.pdf

    线性表的基本操作包括插入、删除、查找等操作。 线性表的实现方式有两种:顺序映像和链式映像。顺序映像是将数据元素存储在连续的存储单元中,而链式映像是将数据元素存储在不连续的存储单元中,并使用指针来连接...

    线性表综合题_C语言_线性表_

    在本题中,我们关注的是如何使用C语言来实现线性表的一些基本操作,包括添加元素(增)、删除元素(删)、修改元素(改)以及查找元素(查)。C语言以其简洁而强大的特性,成为了实现此类算法的理想选择。 首先,...

Global site tag (gtag.js) - Google Analytics