`

线性表(数组)

 
阅读更多
// ArrayList.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


#include "stdio.h"   //#define MAXNUM 100 //顺序表中最大元素的个数




struct SeqList
{
  int MAXNUM; 
  int n;           //存放线性表中现有元素的个数,随着元素的增加个数是动态变化的
  int * element ; //DateType element[];其实本质也是指针类型       
};

typedef struct SeqList * PSeqList; // PSeqList是 SeqList的指针的类型




//创建空顺序表 

PSeqList createNullList_seq(int m)
{
      PSeqList palist=(PSeqList)malloc(sizeof(struct SeqList));
      if(palist!=NULL)
      {
              palist->element=(int *)malloc(sizeof(int)*m);
              if(palist->element)
              {
                palist->MAXNUM=m;//设置了MAXNUM
                palist->n=0;
                return (palist);
              } 
              else
                 free(palist);        
      }


      printf("Out of space!!\n");
      return NULL;
         
}
//数据的输入
void input_SeqList(PSeqList palist)
{
	int count=0;

	for(int i=0;i<palist->MAXNUM;i++)
	{
		scanf("%d",&(palist->element[i]));
		palist->n++;
		if(palist->element[i]==0)
			break;
		
		
	}
}


//遍历
void traversal(PSeqList palist)
{
	for(int i=0;i<palist->n;i++)
	{
		printf("%d\n",palist->element[i]);
	}

}

//判断线性表是否为空 为空就返回1,否则返回0,为空就返回真 
int isNullList_seq(PSeqList palist)
{
  return (palist->n==0);    
} 
//查找某个元素在线性表中的位置 

int locate_seq(PSeqList palist,int x)
{
  int q;
  for(q=0;q<palist->n;q++)
	  if(palist->element[q]==x)
		  return (q);

  return (-1);
}



//如果插入数据标志是p 那么是在p-1和p之间插入一个数值,也是p-1之后插入一个数,也是从前往后数第P个数之后插入一个

int insertpre_seq(PSeqList palist,int p,int x)
{
   //在第p个数之后插入元素x
	int q;
	if(palist->n >=palist->MAXNUM)
	{
		printf("Overflow!\n");
		return (0);
	  
	}

	if( isNullList_seq(palist) )
	{
		palist->element[0]=x;
		//数据插入以后,一定要更新n的值

		palist->n=1;

		return (1);
	}

	if(p<0||p>palist->n)
	{
	  printf("Not exist!\n");
	  return (0);
	}




	
	//特殊情况排除以后,考虑正常情况
	for(q=palist->n-1;q>=p;q--)
	      palist->element[q+1]=palist->element[q];


	

	palist->element[p]=x;

	palist->n+=palist->n;


	return (1);
}


//删除下标为p的元素

int deleteP_seq(PSeqList palist,int p)
{
	if(p<0||p>palist->n-1)
	{
	  printf("不存在这样的下标");
	  return (0);
	}

	for(int i=p;i<palist->n-1;i++)
	      palist->element[i]=palist->element[i+1];

	palist->n-=palist->n;

	return (1);
    

}




main()
{
	PSeqList palist= createNullList_seq(100);
	input_SeqList(palist);
	traversal(palist);
	system("pause");
      
} 





分享到:
评论

相关推荐

    线性表的数组表示和实现

    线性表的数组表示和实现 线性表的数组表示和实现

    用数组实现线性表各种操作(C语言)完结

    这篇博客“用数组实现线性表各种操作(C语言)完结”很可能是详细介绍了如何使用C语言中的数组来构建并操作线性表。 线性表的操作主要包括: 1. 初始化:创建一个空的线性表,通常是在数组中分配空间,并将其长度设...

    数组对应元素相加.docx

    数组对应元素相加的 C++ 程序设计 C++ 计算机软件基础知识点: 1. 数组的定义和初始化:在 C++ 中,数组是一种数据结构,可以存储多个相同类型的元素。数组的定义需要指定数组的名称和数组的大小。例如,在本实验...

    C语言课程设计线性表&数组学生成绩管理系统

    在本项目中,"C语言课程设计线性表&数组学生成绩管理系统"是一个实践性的学习任务,旨在帮助学生深入理解和应用C语言编程知识,特别是关于线性表和数组的数据结构。下面将详细阐述相关知识点。 1. **C语言基础**: ...

    线性表的数组实现

    线性表的数组实现,采用抽象数据型ADT的语法说明和语法格式说明进行实现,操作规范。

    C++ 数据结构线性表-数组实现

    总的来说,C++中的线性表数组实现涉及到了动态内存分配、对象生命周期管理、数组操作以及基本数据结构的操作方法实现。这样的实现允许高效地访问和修改数组内的元素,但由于数组大小固定,插入和删除操作在表满或...

    c语言实现学生成绩管理系统

    1.数据结构结构体数组的定义 2.线性表数组的应用(非普通数组) 3.实现建立,插入,查找,删除,打印的基本功能

    用Java动态数组扩充实现线性表

    本话题聚焦于使用动态数组来实现线性表,这是一种常见的数据结构实现方式,因为它既保留了数组的高效访问特性,又能灵活地调整大小以适应数据的变化。 动态数组,也称为可变长度数组,不同于固定大小的数组,它允许...

    数组,线性表的推广,很有趣哦

    数组可以看作是一种推广的线性表,例如一维数组可以看作是一个线性表,二维数组可以看作是一个“数据元素是一维数组”的一维数组,三维数组可以看作“数据元素是二维数组”的一维数组,依此类推。 二、数组的定义 ...

    线性表实现各种操作 使用数组

    用数组实现线性表,并完成各种操作,主要是插入查找、删除插入

    js线性表插件 数组,链表,简单实现.rar

    在JavaScript中,我们可以通过多种方式来实现线性表,包括数组和链表。本压缩包包含的是JavaScript对线性表的四种基本实现:数组、单链表、单向循环链表和双向链表。下面我们将详细探讨这些数据结构及其实现。 1. *...

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

    在这个实验代码中,我们关注的是使用C语言实现线性表,并采用数组作为底层存储机制。 线性表的基本操作包括: 1. 初始化:创建一个空的线性表,通常用一个空数组来表示。 2. 插入元素:在线性表的特定位置插入一个...

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

    线性表的数组实现,也被称为顺序表,是将线性表的所有元素存储在一个固定大小的一维数组中。这种实现方式的优点在于访问元素速度快,因为数组的元素可以通过索引直接访问,时间复杂度为O(1)。然而,插入和删除元素时...

    数据结构实验指导书2

    本实验指导书涵盖了数据结构的多个方面,包括图的连通性判断、最小生成树的求解、递归、排序算法、数组描述线性表、链式描述线性表、数组和矩阵、栈、队列、散列表、二叉树操作等。 一、图的连通性判断和最小生成树...

    数组实现线性表 数据结构

    ### 数组实现线性表的数据结构 在计算机科学中,数据结构是计算机存储、组织数据的方式,它使得数据能够高效地被访问和修改。本文主要介绍如何使用数组来实现线性表这一基本数据结构。 #### 线性表定义与特点 ...

    C++语言实现线性表之数组实例

    本实例主要关注使用数组来实现线性表。数组实现的优势在于随机访问的高效性,但插入和删除操作可能会涉及大量的元素移动。 `CArray`类是一个模板类,意味着它可以处理任何类型的元素(通过`T`作为模板参数)。这个...

    Java 实现线性表

    在Java中,我们通常通过两种方式来实现线性表:数组和链表。下面将详细讨论这两种实现方式及其操作。 一、数组实现线性表 1. **数组定义**:在Java中,数组是最基本的线性数据结构,可以存储同一类型的元素。通过...

    用数组实现线性表的各种操作(C语言)只完成一部分功能,明日继续

    在C语言中,线性表通常通过数组来实现,因为数组提供了连续的内存空间,便于进行随机访问。这篇博客"用数组实现线性表的各种操作(C语言)只完成一部分功能,明日继续"可能探讨了如何使用C语言创建和操作线性表,但...

    数组、链表、堆栈和队列、线性表和顺序表 数组和链表.pdf

    数组、链表、堆栈和队列、线性表和顺序表 数组、链表、堆栈和队列是最基本的数据结构,任何程序都会涉及到其中的一种或多种。数据结构是指数据之间的相互关系,即组织形式,有逻辑结构和物理结构之分。逻辑结构有...

Global site tag (gtag.js) - Google Analytics