#define LIST_INIT_SIZE 10 //分配空间大小
#include <iostream>
#include <stdlib.h>
using namespace std;
//线性表结构
typedef struct{
int * elem;
int length;
}SqList;
//构造一个空的线性表
void InitList(SqList &L)
{
L.elem = (int *) malloc (LIST_INIT_SIZE * sizeof(int));
//分配顺序表空间
L.length = 0; //此时长度为0
}
//判断线性表L是否是空
void ListEmpty(SqList &L)
{
if(L.length==0)
cout<<"线性表,是空表\n";
else
cout<<"线性表不是空表\n";
}
//将线性表置为空
void ClearList(SqList &L)
{
L.length=0;
cout<<"已经线性表置空。\n";
}
//输出线性表中的元素个数
void ListLength(SqList L)
{
cout<<"线性表L中的元素个数为:";
cout<<L.length<<"\n";
}
//输入n个字符到线性表中
void ScanfList(SqList &L)
{
int n,SCANF;
cout << "请问要输入几个整型字符:";
cin >> n;
cout<<"请输入:";
for(int i=0;i<n;i++)
{
cin >> SCANF;
L.elem[L.length++] = SCANF;//也可以写成
/*
L.elem[i]=SCANF;
L.length++;
*/
}
}
//输出线性表中的所有元素
void PrintfList(SqList L)
{
if(L.length==0)
{
cout << "线性表中没有元素。";
return ;
}
cout <<"线性表中的所有元素为:";
for(int i=0;i<L.length;i++)
cout<<L.elem[i]<<" ";
cout<<"\n";
}
//返回第N个元素
void GetElem(SqList L)
{
int i;
cout << "要输出第几个元素:";
cin >> i;
if(i>L.length||i<1)
{
cout << "输入错误。\n";
return ;
}
cout << "第" << i << "个元素的返回值为:" << L.elem[i-1] << "\n";
}
//查找线性表中某元素是否存在
void LocateList(SqList L)
{
int x,i,flag=0;
cout << "请输入要查询的值:";
cin >> x ;
for(i=0;i<L.length;i++)
if(L.elem[i]==x)
flag=1;
if(flag==1)
cout <<x << "(存在)\n";
else
cout <<x << "(不存在)\n";
}
//向线性表中的某个位置插入元素
void ListInsert(SqList &L)
{
int n,x,i;
cout << "插入元素到第几位:";
cin >> n;
if(n<0||n>L.length+1)
{
cout << "输入位置错误。\n";
return ;
}
L.length++;
for(i=L.length;i>=0;i--)
{
L.elem[i]=L.elem[i-1];
if(i==n)
break;
}
cout << "请输入插入的元素:";
cin >> x;
L.elem[n-1]=x;
}
//删除线性表中某个位置的元素
void ListDelete(SqList &L)
{
int i,n,e;
cout << "删除第个元素";
cin >> n;
if(n>L.length||n<=0)
{
cout << "输入位置错误";
return ;
}
for(i=n-1;i<L.length;i++)
L.elem[i]=L.elem[i+1];
L.length--;
}
int main()
{
SqList L;
InitList(L); //构架一个空的线性表L
ListEmpty(L); //检查线性表L是否为空
ClearList(L); //将线性表L置为空
ListLength(L); //返回线性表L中的元素个数
ScanfList(L); //向线性表L中输入数据,输入量自定义
ListEmpty(L); //检查线性表L是否为空
ListLength(L); //返回线性表L中的元素个数
PrintfList(L); //输出线性表L所有元素
GetElem(L); //返回第N个元素
//ListEmpty(L); //检查线性表L是否为空
//ClearList(L); //将线性表L置为空
//ListLength(L); //返回线性表L中的元素个数
//PrintfList(L); //输出线性表L所有元素
LocateList(L); //查找线性表中某元素是否存在
ListInsert(L); //向线性表中的某个位置插入元素
PrintfList(L); //输出线性表L所有元素
ListDelete(L); //删除线性表中某个位置的元素
PrintfList(L); //输出线性表L所有元素
return 0;
}
线性表的顺序表示和实现
最新推荐文章于 2024-11-10 22:49:00 发布