云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构C语言版.线性表的动态分配顺序存储结构表示和实现文库

数据结构C语言版.线性表的动态分配顺序存储结构表示和实现文库

  • 62 次阅读
  • 3 次下载
  • 2025/7/6 13:20:30

if(e <= *((*L).elem+j)) break;

// 将e插表中的第j+1个位置 ListInsert(L, j+1, e); }

return 1; }

// 按非升序建立n个元素的线性表。 int CreatDescend(SqList *L, int n) {

int i,

j; //记录数据要插入的位置 ElemType e;

InitList(L);

printf(\请输入%d个元素:\\n\ scanf(\

ListInsert(L, 1, e); // 在空表中插入第1个元素 for(i = 1; i < n; i++) {

scanf(\

for(j = 0;j < (*L).length; j++) if(e >= *((*L).elem + j)) break;

ListInsert(L, j + 1, e); }

return 1; }

// 进行测试

// 数据元素判定函数(平方关系)

int comp(ElemType c1, ElemType c2) {

if(c1 == c2*c2) return 1; else

return 0; }

// ListTraverse()调用的函数(类型要一致)

void visit(ElemType *c) {

printf(\}

// ListTraverse()调用的另一函数(元素值加倍) void dbl(ElemType *c) {

*c *= 2; }

int main() {

SqList L;

SqList La, Lb, Lc; ElemType e, e0, d; int i;

int j, k, n;

int a[4] = { 3, 5, 8, 11},

b[7] = { 2, 6, 8, 9, 11, 15, 20};

// 初始化操作 i = InitList(&L);

printf(\初始化L后:L.elem=%u L.length=%d L.listsize=%d\\n\\n\ L.elem, L.length, L.listsize);

// 通过插入操作创建一个顺序表 for(j=1;j<=5;j++)

ListInsert(&L, 1, j);

printf(\在L的表头依次插入1~5后:*L.elem=\ for(j =1 ; j <= 5; j++)

printf(\ printf(\

printf(\ L.elem, L.length, L.listsize);

// 判断顺序表是否为空表 i = ListEmpty(L);

printf(\是否空:i=%d(1:是 0:否)\\n\\n\

// 清空顺序表

i = ClearList(&L);

printf(\清空L后:L.elem=%u L.length=%d L.listsize=%d\\n\\n\ L.elem,L.length,L.listsize);

i = ListEmpty(L);

printf(\是否空:i=%d(1:是 0:否)\\n\\n\

// 再次通过插入操作创建一个新的顺序表 for(j = 1; j <= 10; j++) ListInsert(&L,j,j);

printf(\在L的表尾依次插入1~10后:*L.elem=\for(j = 1; j <= 10; j++)

printf(\printf(\

printf(\ L.elem, L.length, L.listsize);

// 插入一个数的操作 ListInsert(&L, 1, 0);

printf(\在L的表头插入0后:*L.elem=\

// 求当前顺序表的长度,并打印顺序表, ListLength(L)返回元素个数 for(j = 1; j <= ListLength(L); j++) printf(\printf(\

printf(\有可能改变) L.length = %d(改变)\ \改变)\\n\\n\ L.elem, L.length, L.listsize);

// 取得顺序表的第5个数并用e返回 GetElem(L, 5, &e);

printf(\第5个元素的值为:%d\\n\\n\

// 返回第一个与j满足关系compare的数据元素的位序 // 在这里举了两个例子,一个符合,一个不符合的 for(j = 3; j <= 4; j++) {

k = LocateElem(L, j, comp); if(k)

printf(\第%d个元素的值为%d的平方\\n\\n\ else

printf(\没有值为%d的平方的元素\\n\\n\}

// 求前驱的操作,在这里举了两个例子,一个符合,一个不符合的(即头) for(j = 1; j <= 2; j++) {

GetElem(L, j, &e0); // 把第j个数据赋给e0 i = PriorElem(L,e0,&e); // 求e0的前驱

if(i == 0)

printf(\元素%d无前驱\\n\\n\ else

printf(\元素%d的前驱为:%d\\n\\n\}

// 求后继操作,在这里同样举了两个例子,一个符合,一个不符合的(即尾) for(j = ListLength(L)-1; j <= ListLength(L); j++) {

GetElem(L,j,&e0); // 把第j个数据赋给e0 i = NextElem(L,e0,&e); // 求e0的后继 if(i == 0)

printf(\元素%d无后继\\n\\n\ else

printf(\元素%d的后继为:%d\\n\\n\}

// 删除操作

k = ListLength(L);

for(j = k+1; j >= k; j--) {

// 删除第j个数据

i = ListDelete(&L, j, &e); if(i == 0)

printf(\删除第%d个数据失败\\n\\n\ else

printf(\删除的元素值为:%d\\n\\n\}

// 对顺序表的所有元素调用函数visit printf(\依次输出L的元素:\ListTraverse(L,visit);

//对顺序表的所有元素调用函数dbl printf(\的元素值加倍后:\// 依次对元素调用dbl(),元素值乘2 ListTraverse(L,dbl); // 显示链表

ListTraverse(L,visit); printf(\

// 销毁顺序表 DestroyList(&L);

printf(\销毁L后:L.elem=%u L.length=%d L.listsize=%d\\n\\n\\n\

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

if(e <= *((*L).elem+j)) break; // 将e插表中的第j+1个位置 ListInsert(L, j+1, e); } return 1; } // 按非升序建立n个元素的线性表。 int CreatDescend(SqList *L, int n) { int i, j; //记录数据要插入的位置 ElemType e; InitList(L); printf(\请输入%d个元素:\\n\ scanf(\ ListInsert(L, 1, e); // 在空表中插入第1个元素 for(i = 1; i < n; i++) { scanf(\ for(

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com