数据结构 线性表的操作

1.使用C/C++实现线性表抽象数据类型定义的12种基本操作,可选择实现顺序线性表、单链表的任意一种。2.建立操作选择菜单,根据选择完成操作。3.要求每种操作有完整的输出... 1. 使用C/C++实现线性表抽象数据类型定义的12种基本操作,可选择实现顺序线性表、单链表的任意一种。
2. 建立操作选择菜单,根据选择完成操作。
3. 要求每种操作有完整的输出:显示到屏幕上并输出到一个结果文件中。
4. 在程序的第一条以注释说明程序名称、功能、编程者的学号、姓名等。
展开
 我来答
帐号已注销
2010-04-13
知道答主
回答量:11
采纳率:0%
帮助的人:10万
展开全部
#include<stdio.h>
#include<string.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
Status InitList_Sq(SqList&L)
{
//构造一个空的线性表
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if (!L.elem) exit(OVERFLOW); //分配存储失败
L.length = 0; //空表长度为0
L.listsize = LIST_INIT_SIZE;//初始存储容量
return OK;

}//InitList.Sq
DestroyList(&L)
{

}
ClearList(&L)
{

}
ListEmpty(L)
{

}
ListLength(L)
{

}
GetElem(L,i,&e)
{

}
int LocateElem_Sq(SqList L,ElemType e,
Status(*compare)(ElemType,ElemType)) { //在顺序表中查询第一个满足判定条件的数据元素,若存在,则返回它的位序,否则返回0
i=1; // i的初值为第1元素的位序
p=L.elem; //p的初值为第1元素的存储位置
while(i<=L.length && !(*compare)(*p++,e))++i;
if(i<=L.length)return i;
else return 0;
} //LocateElem_SqPriorElem(L,cur_e,&pre_e)
PriorElem(L,cur_e,&pre_e)
{

}
NextElem(L,cur_e,&next_e)
{

}
Status ListInsert_Sq(SqList &L, int i, ElemType e)
{ //在顺序表L的第 i 个元素之前插入新的元素e,
// i 的合法范围为 1≤i≤L.length+1
q = &(L.elem[i-1]); //q 指示插入位置
for (p = &(L.elem[L.length-1]); p >= q; --p)
*(p+1)=*p; //插入位置及之后的元素右移
*q = e; //插入e
++L.length; //表长增1
return OK;
} //ListInsert_Sq
Status ListDelete_Sq(SqList &L, int i, ElemType &e)
{ if((i<1) || (i>L.length)) return ERROR;
//删除位置不合法
p=&(L.elem[i-1]); // p为被删除元素的位置
e=*p; //被删除元素的值赋给 e
q=L.elem+L.length-1; //表尾元素的位置
for(++p;p<=q;++p)*(p-1)=*p;
//被删除元素之后的元素左移
--L.length; //表长减1
} //ListDelete_Sq
ListTraverse(L,visit())
{

}
void main()
{
int i;
char ch;
while(1)
{
puts("1,构造一个空的线性表");
puts("2,销毁线性表L");
puts("3,将L重置为空表");
puts("4,判断表L是否为空表");
puts("5,给出线性表的长度");
puts("6,用e返回第i个元素的值");
puts("7,查找第一个返回给定数据元素的位序,compare()为数据元素比较函数
");
puts("8,确定并给出指定数据元素的前驱");
puts("9,确定并给出指定数据元素的后继");
puts("10,在第i个位置之前插入一个数据元素
");
puts("11,删除第i个数据元素");
puts("12,依次访问L的每个数据元素(遍历)");
puts("13,退出");
scanf("%d",i);
switch i
case 1:Initlist(&L);break;
case 2:DestroyList(&L);break;
case 3:ClearList(&L);break;
case 4:ListEmpty(L);break;
case 5:ListLength(L);break;
case 6:GetElem(L,i,&e);break;
case 7:LocateElem(L,e,compare());break;
case 8:PriorElem(L,cur_e,&pre_e);break;
case 9:NextElem(L,cur_e,&next_e);break;
case 10:ListInsert(&L,i,e);break;
case 11:ListDelete(&l,i,&e);break;
case 12:ListTraverse(L,visit());break;
case 13:

}
}

这个不是很全 还有些地方需要补充
景联文科技
2024-06-11 广告
杭州景联文科技有限公司专注于大模型数据集的研发与应用。我们深知,在人工智能飞速发展的时代,数据是驱动模型优化的核心动力。因此,我们致力于构建丰富、多元的大模型数据集,涵盖各行各业,为AI模型提供充足的“养分”。通过不断积累与优化,我们的数据... 点击进入详情页
本回答由景联文科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式