1.2顺序表

计算机内部存储一张线性表(线性结构的数表),最简单方便的方法就是用一组连续地址的内存单元来存储整张线性表。

顺序表的特征:

  1)有一个唯一的表名来标识该顺序表;

  2)内存单元连续存储,也就是说,一张顺序表要占据一块连续的内存空间;

  3)数据顺序存放,元素之间有先后关系

注意:数组本身就是一张顺序表。

顺序表的定义:

两种定义顺序表的方法:静态定义一张顺序表;动态生成一张顺序表。

静态地定义一张顺序表的方法与定义一个数组的方法类似。

向顺序表中插入、删除元素、

————————————————————————————————————————

________________________________________________________

实例:

创建一个静态的顺序表存放整数,大小为10,完成以下操作:

1)输入6个整数,打印出顺序表的内容,并显示剩余空间;

2)在第三个位置插入元素0,打印出顺序表内容,并显示剩余空间个数;

3)再试图向表中第11个位置插入元素0

4)删除表中第六个元素,打印出表中内容,并显示剩余空间个数;

#include<stdlib.h>
#include<stdio.h>
#define MaxSize 10
//静态顺序表的各种操作

void insertElem(int Sqlist[],int *len,int i,int x)	//向顺序表中插入元素。Sqlist表示首地址,*len表长度,i插入位置,x待插入位置
{
	int t;
	if(*len==MaxSize || i<1 || i>*len+1)		//非法插入
	{
		printf("this insert is illegal\n");
		return;
	}
	for(t=*len-1;t>=i-1;t--)	//插入元素
		Sqlist[t+1]=Sqlist[t];
	Sqlist[i-1]=x;
	*len=*len+1; 	//表长加1
}

void DelElem(int Sqlist[],int *len,int i)	//向顺序表删除元素,Sqlist表首地址,*len表长,i删除元素位置
{
	int j;
	if(i<1 || i>*len)
	{
		printf("this insert is illegal");
		return;
	}
	for(j=i;j<=*len-1;j++)
		Sqlist[j-1]=Sqlist[j];
	*len=*len-1;
}

int main()
{
	int Sqlist[MaxSize];
	int len,i;
	printf("input 6 integer numbers\n");

	for(i=0;i<6;i++)
	scanf("%d",&Sqlist[i]);
	len=6;
	for(i=0;i<len;i++)
		printf("%d ",Sqlist[i]);
	printf("\nthe spare length is %d\n",MaxSize - len);

	insertElem(Sqlist,&len,3,0);
		for(i=0;i<len;i++)
		printf("%d ",Sqlist[i]);
	printf("\nthe spare length is %d\n",MaxSize - len);

	insertElem(Sqlist,&len,11,0);
	DelElem(Sqlist,&len,6);
	for(i=0;i<len;i++)
		printf("%d ",Sqlist[i]);
	printf("\nthe spare length is %d\n",MaxSize - len);

	return 0;
}

  

动态创建一个顺序表。

#include<stdio.h>
#include<conio.h>
#define MaxSize 10
//动态顺序表的各种操作
 typedef int ElemType;
 typedef struct{
     int *elem;
     int length;
     int listsize;
 }Sqlist;

void initSqlist(Sqlist *L)
{
    L->elem=(int *)malloc(MaxSize*sizeof(ElemType));
    if(!L->elem)    exit(0);
    L->length=0;
    L->listsize= MaxSize;
}

void InsertElem(Sqlist *L,int i,ElemType item){//……}

void DelElem(Sqlist *L,int i){//……}
时间: 2024-10-12 16:30:50

1.2顺序表的相关文章

顺序表算法设计笔记

1.已知长度为 n 的线性表 A 采用顺序存储结构.设计一个时间复杂度为O(n).空间复杂度为O(1)的算法,该算法删除线性表中所有值为 x 的元素数据元素. 以下两种方法都不满足要求: 如果删除一个值为 x 的元素都进行移动, 其时间复杂度为O(n^2),时间复杂度为O(1). 如果借助一个新的顺序表, 存放将A中所有不为x的元素,其时间复杂度O(n), 空间复杂度为O(n). 解法一:设删除 A 中所有值等于 x 元素后的顺序表为A1, 显然A1包含在 A 中, 为此A1重用 A 的空间.

2、顺序表

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 从这节开始,以后的每一篇博文均会只描述一种结构.这节要解决的是有关顺序表的问题,下面就是一些顺序表的基本的知识点: 1. 顺序表其实就是线性表的一种,它除开始节点和结束节点之外的其他节点,均有且只有一个直接前趋和一个直接后继,开始 节点只有一个后继节点,结束节点只有一个前趋节点. 2. 用顺序存储方法存储的线性表就称为顺序表. 3. 顺序存储方法就是将表的节点按逻辑上的次序依次的存放在一组连续的内存单元中,这里是指在逻辑上连续排列,在

顺序表查找和有序表查找

查找里面顺比表查找和有序表查找(包括二分查找,插值查找,斐波那契查找)比较简单,直接贴代码,代码里面有详细注释. 1 #include <iostream> 2 using namespace std; 3 4 //顺序表查找(线性查找.静态表查找) 时间复杂度为O(n) 5 int Seq_Search(int *s,int n,int key) 6 { 7 s[0] = key; //设置了一个哨兵,避免了每次比较一次过后都要判断查找位置是否越界 8 int i = n; 9 while

线性表---顺序表

线性结构的特点是:在非空的有限集合中,只有唯一的第一个元素和唯一的最后一个元素.第一个元素没有直接前驱元素,最后一个没有直接的后继元素.其它元素都有唯一的前驱元素和唯一的后继元素. 线性表是一种最简单的线性结构.线性表可以用顺序存储结构和链式存储结构存储,可以在线性表的任意位置进行插入和输出操作. 要想将线性表在计算机上实现,必须把其逻辑结构转化为计算机可识别的存储结构.线性表的存储结构主要有两种:顺序存储结构和链式存储结构. 线性表的顺序表示与实现 线性表的顺序存储结构 线性表的顺序存储结构指

模板实现顺序表

类模板的成员函数: 类模板的成员函数本身是一个普通函数.但是,类模板的每个实例都有其自己版本的成员函数.因此,类模板的成员函数具有和模板相同的模板参数.因此,在=定义在类模板之外的成员函数就必须以template开始,后跟类模板参数列表. 类模板中的友元函数: 类模板中的友元函数,应该在类中定义.若只在类中声明,在类外定义,则在链接时会出现错误. 类模板实现顺序表: "SeqList.h" //冒泡法 "test.cpp"

顺序表

#include <cstdio> #include <cstring> ///都用c语言写的 #include <iostream> ///建议从主函数开始看 #include <cstdlib> using namespace std; int sequence_map[1000]; int total_sequence = 0; void init_sequence() ///主界面. ///一级菜单中顺序表的操作界面 init初始化 { printf

顺序表的非递减数列合并

#include<stdio.h> /*包含输入输出头文件*/ #define ListSize 100 typedef int DataType; typedef struct { DataType list[ListSize]; int length; }SeqList; void InitList(SeqList *L) /*将线性表初始化为空的线性表只需要把线性表的长度length置为0*/ { L->length=0; /*把线性表的长度置为0*/ } int ListEmpt

顺序表(存在问题)

#include <iostream> using namespace std; typedef int DataType; struct SeqList { int MAXNUM; int n; DataType *element; }; typedef struct SeqList *PSeqList; PSeqList createEmptySeq(int m) { PSeqList palist = (PSeqList) malloc (sizeof (struct SeqList))

稀疏矩阵的三元组顺序表的C语言实现

对于没有排序功能的集合来说,都可以使用java.util.Collections.sort()方法进行排序,它除了集合对象以外,还需要提供一个比较器.如果列表中的元素全部都是相同的类型,并且这个类实现了Comparable接口,就可以简单的调用Collections.sort()方法,如果这个类没有实现comparable接口,那么可以创建一个比较器传递一个Comparator实例作为Sort()的第二个参数进行排序,另外,如果不想使用默认的分类顺序进行排序,同样也可以传递一个Comparato

【线性表2】线性表的顺序实现:顺序表

顺序表简介 特点:使用一组地址连续的存储单元依次存储表中的数据元素,常见的就是使用数组去实现. 表中逻辑相邻的数据元素,在物理内存上也相邻. 顺序表中的任意数据元素都可随机访问,是一种支持随机访问,长度自动动态调整的线性表结构. 优点:访问表中的元素很快,时间复杂度为O(1) 缺点:插入,删除元素需要移动大量的元素,时间复杂度为O(n) . 因此如果我们在编程中需要这样一种线性表数据结构:构造后对元素的访问操作很频繁,而很少进行增,删等元素位置的调整操作,那么就可以考虑使用顺序表. 代码实现 #