线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使 用的数据结构,常⻅的线性表:顺序表、链表、栈、队列。顺序表一般由一个数组构成,每个元素都连续存放。
头文件
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
using namespace std;
typedef int ElemType; //给int指定别名
typedef int status ; //给int指定别名
//此时int与ElemType等价,int与status等价
顺序表的基本操作
顺序表的定义
typedef struct SqList{
ElemType *elem; //定义指针 等价于int * elem
int length ; //这是顺序表实际长度,例如在插入元素时,如果length==MAX,则需要分配空间;
int MAX ; //这是申请成功的数组空间
}SqList;
初始化顺序表
void initlist(SqList &L,int MAX)
{ L.MAX=100 ;
L.elem=(ElemType *)malloc((L.MAX)*sizeof(ElemType));
/* L->elem等价于L.elem;
malloc函数使用规则;
L.elem=(ElemType *)malloc(sizeof(ElemType)*(L.MAX));
*/
L.length=0;
if(L.elem==0)
printf("顺序表初始化失败!\n");
else
printf("顺序表初始化成功!\n");
}
插入数据
/*添加元素:添加元素之前先对其进行判断,若其中的元素实际长度length小于该数组的空间MAX,则可以添加元素
如果大于或等于申请的空间MAX,则不能添加*/
//向表中第i个位置插入数据
int insertlist(SqList &L,int i,ElemType e)
{
ElemType *newbase,*p,*q ;
if(i<1||i>L.length+1) return 0;//此处判断插入位置是否合理
if(L.length>=L.MAX)//此处判断空间是否足够
{
newbase=(ElemType *)malloc((L.MAX+20)*sizeof(ElemType));
if(newbase==0) printf("ERROR!(:newbase)");
L.elem=newbase;
L.MAX+=20;
}
q=L.elem+i-1;//q指向插入位置
for(p=L.elem+L.length-1;p>=q;p--)//从最后一个开始到插入位置 元素依次后移
*(p+1)=*p ;
*q=e ;//把元素赋给q
L.length++ ;//长度+1
return 1;
}
输入数据
/*输入一串元素*/
void inputlist(SqList &L)
{
if(L.length!=0)
{
printf("线性表已满员\n");
}
else{
printf("输入集合A的数据个数:");
scanf("%d",&L.length) ;
printf("输入集合A的所有数据(空格隔开):");
for(int i=0;i<L.length;i++)
{
scanf("%d",&L.elem[i]);
}
}
}
查找定位
//查找定位
void searchlist(SqList &L)
{
int n,m,flag=0;//定义一个旗帜变量
printf("请输入要查找定位的元素:");
scanf("%d",&n);
if(L.length>0)
{
for(int i=0;i<L.length;i++)
{
if(L.elem[i]==n)
{
flag=1;//如果找到匹配的值,旗帜变量变为1
m=i+1;//m变为当前的位置
break;
}
}
}
else
{
printf("该顺序表是空表,ERROR!");//没有数据
}
if(flag==1)
{
printf("%d位于第%d位\n",n,m);//有数据,且找到
}
else
{
printf("查找失败,ERROR!\n");//有数据,未找到
}
}
数据遍历
//遍历
void travelist(SqList &L)
{
int i ;
for(i=0;i<L.length ;i++)
printf("%d ",L.elem[i]);
}
数据删除
//删除
void dellist(SqList &L,int i)
{
for(int n=i;n<=L.length-1;n++)
{
L.elem[n-1]=L.elem[n];
}
L.length--;
}
主函数必备操作
int main()
{
SqList LA;//定义某个线性表
initlist(LA,100);//初始化某个线性表
//可以调用函数进行执行
return 0;
}
标签:顺序,int,MAX,printf,elem,C语言,length,ElemType,基本操作 From: https://blog.csdn.net/qq_44946689/article/details/143213905malloc()函数 动态分配内存空间。
头文件:#include <stdlib.h>
malloc() 分配一块指定大小的内存空间,用来存放数据。
都是一些基础简单的操作,希望可以提供参考。。。