、实验内容 1、采用如下数据类型定义实现顺序表的初始化、插入、删除操作. 要求(1)使用插入算法实现一组数

#defineLIST_INIT_SIZE10//表初始分配量#defineLISTINCREMENT5//表分配增量typedefstruct{elemtype*ele... # define LIST_INIT_SIZE 10 //表初始分配量
# define LISTINCREMENT 5 //表分配增量
typedef struct{
elemtype *elem; //存储空间基址
int length ;//当前长度
int ListSize; //表的大小
} Sqlist;
展开
 我来答
940657123
2011-04-03
知道答主
回答量:6
采纳率:0%
帮助的人:3.5万
展开全部
我的是用顺序表实现的看看对你有没有帮助 先要初始化 再插入一些元素后 就可以进行其他的一些基本操作了 希望对你有帮助
#include<iostream>
#define MAXSIZE 100
#define FALSE 0
#define TRUE 1
using namespace std;
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int Last; //last是线性表的长度
}SeqList;

//顺序表的初始化
SeqList SeqListInit()
{
SeqList L;
L.Last=0;
return L;
}
//求表长
int SeqListLength(SeqList L)
{return(L.Last);}
// 遍历顺序表
void SeqListTraverse(SeqList L)
{int i;
if(L.Last<=0) cout<<"顺序表为空"<<endl;
else {cout<<"当前顺序表中的元素为"<<endl;
for(i=1;i<=L.Last;i++) cout<<L.data[i-1]<<' ';
}
cout<<endl;
}
//元素定位
int SeqListLocate(SeqList L,ElemType x)
{
int i=1;
while(i<=L.Last && L.data[i-1]!=x)
i++;
if(i<L.Last) return i;
else return 0;
}
//表的判空
int SeqListEmpty(SeqList L)
{
return(L.Last==0? TRUE: FALSE);
}
//表是否满
int SeqListFull(SeqList L)
{
return(L.Last==MAXSIZE? TRUE: FALSE);
}
//插入元素
SeqList SeqListInsert(SeqList L,int i,ElemType x)
{
if(L.Last==MAXSIZE)
{cout<<"表满"<<endl;}
if(i<1 || i>L.Last+1)
{cout<<"插入位置错"<<endl;}
for(int j=L.Last-1;j>=i-1;j--)
L.data[i-1]=L.data[j];
L.data[i-1]=x;
L.Last++;
return (L);
}
//删除元素
SeqList SeqListDelete(SeqList L,int i)
{
if(i<1 || i>L.Last)
{cout<<"位置非法"<<endl;}
for(int j=i;j<=L.Last-1;j++)
L.data[j-1]=L.data[j];
L.Last--;
return(L);
}
//求顺序表中元素的前驱
int SeqListPrior(SeqList L,ElemType x)
{int i=0;
while(i<L.Last&&L.data[i]!=x)
i++;
if(i==0) {cout<<"第一个元素没有前驱"<<endl;return 0;}
else if(i<=L.Last-1) return(L.data[i-1]);
else {cout<<"不存在值为"<<x<<"的元素"<<endl;return 0;}
}

//求顺序表中元素的后继
int SeqListNext(SeqList L,ElemType x)
{int i=0;
while(i<L.Last&&L.data[i]!=x)
i++;
if(i==L.Last-1) {cout<<"最后一个元素没有后继"<<endl;return 0;}
else if(i<L.Last-1) return(L.data[i+1]);
else {cout<<"不存在值为"<<x<<"的元素"<<endl;return 0;}
}
//表的清空
SeqList qingkong(SeqList L)
{
L.Last=0;
return L;
}
int in()
{int d;
cout<<"1.顺序表的初始化 2.顺序表的长度为 3.遍历顺序表 4.元素定位 5.表的判空"<<endl;
cout<<"6.表是否满 7.插入元素 8.删除元素 9.求顺序表中元素的前驱 10.求顺序表中元素的后继"<<endl;
cout<<"11.表的清空"<<endl;
cin>>d;
return(d);
}
void main()
{
int quit=0;
SeqList L;int i;ElemType x;ElemType prior,next;
while(!quit)
switch(in())
{case 1:L=SeqListInit();break;
case 2:cout<<"顺序表的长度为:"<<SeqListLength(L)<<endl;break;
case 3:SeqListTraverse(L);
break;
case 4:cin>>x;
cout<<endl;
cout<<"元素所在位置是:"<<SeqListLocate(L,x)<<endl;break;
case 5:if(SeqListEmpty(L))
cout<<"顺序表为空"<<endl;
else cout<<"顺序表不为空"<<endl;
break;
case 6:if(SeqListFull(L))
cout<<"顺序表满"<<endl;
else cout<<"顺序表不满"<<endl;

break;
case 7:cout<<"要插入的元素是:"<<endl;
cin>>i>>x;
cout<<endl;
L=SeqListInsert(L,i,x);
break;
case 8:cout<<"要删除的元素是:"<<endl;
cin>>i;cout<<endl;
L=SeqListDelete(L,i);
break;
case 9:cin>>x;cout<<endl;
prior=SeqListPrior(L,x);
if(prior)
cout<<x<<"的前驱是:"<<prior<<endl;
break;
case 10:cin>>x;cout<<endl;
next=SeqListNext(L,x);
if(next)
cout<<x<<"的后继是:"<<next<<endl;
break;
case 11:L=qingkong( L);
cout<<"表已清空"<<endl;
default:quit=1;

}
}
匿名用户
2011-04-01
展开全部
t &L) /*初始化顺序表*/
{ L=(SqList *)malloc(sizeof(SqList));
l->length=0;
}

void Destroylist(SqList &L) /*销毁顺序表*/
{
free(L);
}

void Clearlist_Sq(SqList &L) /*清空顺序表*/

Status Listempty_Sq(SqList L) /*测试顺序表是否为空*/
{
return(L->length==0);
}

Status ListInsert_Sq(SqList &L, int i,ElemType e) /*在第i个位置上插入一个元素*/
{ int j;
if(i<1||i>L->length+1)
return 0;
i--;
for(j=L->length;j>i;j--)
L->elem[j]=l->elem[j-1];
L->elem[i]=e;
L->length++;
return 1;
}

int LocateElem_Sq(SqList L,ElemType e) /*返回元素e在顺序表中的位置*/
{ int i=0;
while(i<L->length&&L->elem[i]!e) i++;
if(i>=L-length)
return 0;
else
return i+1;
}

Status ListDelete_Sq(SqList &L, int i, int &e) /*删除第i个位置上的元素*/
{ int j;
if(i<1||i>L->length)
return 0;
i--;
e=L->elem[i];
for(j=i;j<L->length-1;j++)
L->elem[j]=L->elem[j+1];
L->length--;
return 1;
}
好好看看
另外,站长团上有产品团购,便宜有保证
追问
在主函数中要如何正确调用自定义函数?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
让甲hD
2011-04-06
知道答主
回答量:76
采纳率:0%
帮助的人:20.6万
展开全部
问林仙丽去。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式