您的位置:首页 > 其它

线性表的顺序存储

2015-08-08 09:55 260 查看
#include<stdio.h>//malloc函数头文件
//ElementType 表示数据类型 MAXSIZE表示数组最大容量
typedef struct
{
ElementType Data[MAXSIZE];
int Last;
} List;
//初始化(建立空的顺序表)
List *MakeEmpty()
{
List *PtrL;
PtrL=(List *)malloc(size(List));
PtrL->Last=-1;
return PtrL;
}
//查找
int Find( ElementType X, List *PtrL)
{
int i=0;
while(i<=PtrL->Last&&PtrL->Data[i]!=X)
i++;
if(i>prtL->Last)
return -1;
else return i;//返回储存位置

}
//插入
void Insert(ElementType X,int i,List *PrtL)
{
int j;
if(PtrL->Last==MAXSIZE-1)//表示表空间已满 不可用于插入
{
cout<<"表满"<<endl;
return;
}
if(i<1||i>PtrL->Last+2)
{
cout<<"位置不合法"<<endl;
return;
}
for(j=PtrL->Last; j>=i-1; j--)
PtrL->data[j+1]=PtrL->Data[j];//从第i个元素开始整体后移一位
PtrL->Data[i+1]=X;//插入新元素
PtrL->Last++;//数组长度加1
return;
}
void Delete(int i,List*PtrL)
{
if(i<1||i>PtrL->Last)
cout<<"位置非法,不存在第"<<i<<"个元素"<<endl;
else
for(int j=i; j<=PtrL->Last; j++)
PtrL->Data[j-1]=PtrL->Data[j];//从第i个元素开始整体前移一位
PtrL->Last--;
return PtrL;
}

malloc函数简介

第一、malloc 函数返回的是void * 类型。对于C++,如果你写成:p= malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给int * 类型变量”。所以必须通过 强制转换。而对于C,没有这个要求,但为了使C程序更方便的移植到C++中来,建议养成强制转换的习惯。
第二、函数的实参为 sizeof(int) ,用于指明一个整型数据需要的大小。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: