目录

1、运行截图

2、代码


1、运行截图

2、代码

#include <stdio.h>
#include <stdlib.h>#define MAXSIZE 100
#define ElemType int
#define Status int
#define OK 1
#define ERROR 0
#define OVERFLOW -2typedef struct
{ElemType *elem;int length;
} SqList;void menu();
Status InitList(SqList &L);                      //初始化链表
Status CreatList(SqList &L);                     //赋值
Status PrintList(SqList &L);                     //打印顺序表
Status GetElem(SqList &L, int i, ElemType &e);   //顺序表的取值
int Locate(SqList &L, ElemType e);               //顺序表的查找
Status ListInsert(SqList &L, int i, ElemType e); //顺序表的插入
Status ListDelete(SqList &L, int i);             //顺序表的删除
void DestoryList_Sq(SqList &L);                  //销毁顺序表
void UnionSqlist(SqList &la, SqList &lb);        //举例应用1
void purge(SqList &la, SqList &lb);              //构造线性表la,使其只包括lb中所有值不同的数据元素
Status isequal(SqList &la, SqList &lb);          //若线性表la和lb不仅长度相等,且所含数据元素也相同,则返回OKvoid menu()
{printf("\n");printf("*********顺序表基本功能的实现**********\n");printf("*********1---初始化顺序表    **********\n");printf("*********2---赋值顺序表      **********\n");printf("*********3---打印顺序表      **********\n");printf("*********4---取值            **********\n");printf("*********5---查找元素是否存在**********\n");printf("*********6---插入元素        **********\n");printf("*********7---删除元素        **********\n");printf("*********0---退出            **********\n");printf("\n");
}int main()
{int e;int locate;SqList L;int select;while (1){menu();printf("请输入您要实现的功能:\n");scanf("%d", &select);switch (select){case 1:if (InitList(L))printf("初始化成功\n");elseprintf("初始化失败\n");break;case 2:CreatList(L);break;case 3:PrintList(L);break;case 4:printf("请输入元素的位置:\n");scanf("%d", &locate);if (GetElem(L, locate, e))printf("第%d个位置上的数为%d", locate, e);elseprintf("取值失败.\n");break;case 5:printf("请输入要查找的元素:");scanf("%d", &e);locate = Locate(L, e);if (locate)printf("\n该元素在列表的位置是%d\n", locate);elseprintf("\n不存在该元素\n");break;case 6:printf("请输入您要插入的位置和元素值:\n");scanf("%d%d", &locate, &e);printf("*********插入前************\n");PrintList(L);if (ListInsert(L, locate, e)){printf("插入成功\n");printf("*********插入后************\n");PrintList(L);}elseprintf("插入失败\n");break;case 7:printf("请输入您要删除的位置:\n");scanf("%d", &locate);printf("*********删除前************\n");PrintList(L);if (ListDelete(L, locate)){printf("删除成功\n");printf("*********删除后************\n");PrintList(L);}elseprintf("删除失败\n");break;case 0:return 0;default:printf("对不起,暂没有该功能。\n");}}SqList la, lb;/*UnionSqlist(la,lb);printf("*****两表合并后的结果为:*******\n");PrintList(la);printf("目前la表的表长为:%d\n",la.length);*///对线性表lb提纯/* purge(la,lb); *///比较两个列表是否相等if (isequal(la, lb))printf("la和lb相等。\n");elseprintf("la和lb不相等。\n");return 0;
}Status InitList(SqList &L)
{L.elem = (ElemType *)malloc(MAXSIZE * sizeof(ElemType));if (!L.elem)exit(OVERFLOW);L.length = 0;return OK;
}Status CreatList(SqList &L)
{int num, i;printf("******现在开始赋值********\n");printf("请输入总个数:\n");scanf("%d", &num);for (i = 0; i < num; i++){printf("请输入第%d个数:", i + 1);scanf("%d", &L.elem[i]);L.length++;}if (L.length == num)return OK;elsereturn ERROR;
}Status PrintList(SqList &L)
{if (!L.length)return ERROR;int i = 0;printf("*******打印开始********\n");for (; i < L.length; i++)printf("%d ", L.elem[i]);printf("\n");printf("*******打印结束********\n");return OK;
}Status GetElem(SqList &L, int i, ElemType &e)
{if (i < 1 || i > L.length)return ERROR;e = L.elem[i - 1];return OK;
}int Locate(SqList &L, ElemType e)
{int i = 0;for (; i < L.length; i++)if (e == L.elem[i])return i + 1;return 0;
}Status ListInsert(SqList &L, int i, ElemType e)
{//1.判断是否合法if (i < 1 || i > L.length + 1)return ERROR;//2.判断顺序表的存储空间是否已满,若满则返回error.if (L.length == MAXSIZE)return ERROR;//3.将第n个至第i个位置的元素依次向后移动一个位置,空出第i个位置(i=n+1时无需移动)。int j;for (j = L.length - 1; j >= i - 1; j--)L.elem[j + 1] = L.elem[j];//4.将要插入的新元素e放入第i个位置L.elem[i - 1] = e;//5.表长加1.L.length++;return OK;
}Status ListDelete(SqList &L, int i)
{//1、判断删除位置是否合法,若不合法则返回ERROR.if (i < 1 || i > L.length)return ERROR;//2、将第i+1个至第n个元素依次向前移动一个位置int j;for (j = i; j < L.length; j++)L.elem[j - 1] = L.elem[j];//3、表长减1L.length--;return OK;
}void DestoryList_Sq(SqList &L)
{delete[] L.elem;L.length = 0;
}void UnionSqlist(SqList &la, SqList &lb)
{//将线性表lb中所欲在la中不存在的元素插入到la中,算法执行结束后,线性表lb将不再存在//初始化la、lb并赋值InitList(la);InitList(lb);printf("请给la表赋值:\n");CreatList(la);printf("请给lb表赋值:\n");CreatList(lb);//打印检查PrintList(la);PrintList(lb);int i = la.length, j = 0;while (j <= lb.length - 1){if (Locate(la, lb.elem[j]))j++;else{la.elem[i] = lb.elem[j];la.length++;i++;j++;}}DestoryList_Sq(lb);
}void purge(SqList &la, SqList &lb)
{//构造线性表laInitList(la);//初始化并给lb赋值InitList(lb);CreatList(lb);int j = 0, i = 0;while (j < lb.length){if (Locate(la, lb.elem[j]))j++;else{ListInsert(la, i, lb.elem[j]);i++;}}//打印laprintf("原始数列是:\n");PrintList(lb);printf("提纯后:\n");printf("la的长度为%d:\n", la.length);PrintList(la);//销毁lbDestoryList_Sq(lb);
}Status isequal(SqList &la, SqList &lb)
{//初始化la,lb,lc;InitList(la);InitList(lb);//给la和lb赋值CreatList(la);CreatList(lb);int lena = la.length;int lenb = lb.length;if (lena != lenb)return ERROR;else{SqList lc;InitList(lc);//把la的值赋值一份给lcint i = 0;for (; i < la.length; i++){lc.elem[i] = la.elem[i];lc.length++;}//打印la和lc进行验证/* printf("la为:\n");PrintList(la);printf("lc为:\n");PrintList(lc);*///进行比较int j = 0;for (; j < lenb; j++){if (Locate(lc, lb.elem[j]))ListDelete(lc, lb.elem[j]);}if (lc.length == 0)return OK;elsereturn ERROR;}
}

多谢观看~

C/C++【顺序表】【初始化、赋值、打印、取值、查找、插入、删除、销毁、综合举例】相关推荐

  1. input输入框赋值、取值

    目录 html easyui layui 自己做个记录,在对页面进行修改,开发的时候,总是去查资料 html <input  id="cpno" name="cpn ...

  2. div赋值,取值和input赋值,取值

    div赋值文本和html代码,取值和input赋值,取值 一.div取值<div id="txtXiaofei" class="txt-panel"> ...

  3. 对编辑框进行赋值和取值

    当你使用了ClassWizard建立了控件和变量之间的联系后,有以下方法可以实现对编辑框的赋值和取值. 1. 使用控制型变量如m_edit1 (1)用CWnd的SetWindowText() 和Get ...

  4. 递增有序顺序表的插入 (20分) 实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置

    递增有序顺序表的插入 (20分) 实验目的:1.掌握线性表的基本知识 2.深入理解.掌握并灵活运用线性表.3.熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置 ...

  5. js jquery给input标签赋值、取值

    js jquery给input标签赋值.取值 html代码 赋值 取值 html代码 <input type="text" id="name"/> ...

  6. jquery给按钮赋值_jQuery给div,Span, a ,button, radio 赋值与取值

    jquery给div的innerHTML赋值 $("#id").html()="test"; //或者 $("#id").html(&quo ...

  7. 两个有序顺序表la,lb合并为lc(不删除重复)。

    两个有序顺序表la,lb合并为lc(不删除重复). #include<stdio.h> struct LNode {int data[30];int last; }; int main() ...

  8. # Ajax提交Form表单以及后端取值(java)

    Ajax提交Form表单以及后端取值(java) 1.ajax提交form表单:提交的按钮οnclick="denglu()"时候触发ajax方法 <script>fu ...

  9. php给textarea赋值,html中textarea赋值与取值问题详细讲解

    html中textarea赋值与取值问题详细讲解2017-10-17 21:49 许多小伙伴在编程的时候,容易搞错一个问题,就是对textarea赋值. 因为第一感觉就是textarea和input一 ...

  10. 数据结构专题(一):1.1顺序表初始化

    顺序表有以下特性: (1)初始化 (2)增删改查 (3)遍历读取 如下代码: 头文件.h #pragma once #include <stdio.h> #include <stdl ...

最新文章

  1. html产品列表页的设计,产品列表页.html
  2. 【Redis】配置redis主从复制
  3. 人生第一份Offer,国企、私企、外企该选择哪一个?
  4. apache的rewrite模块实例操作
  5. Oracle入门(十四B)之PL/SQL异常处理
  6. php mysql_query预处理,php+mysqli使用预处理技术进行数据库查询的方法
  7. redis安装190923课堂版
  8. c语言中同级运算符的运算顺序,二 如何学习C语言的运算符和运算顺序
  9. oracle 前导列_Oracle数据库表和表列讲解
  10. net share命令删除共享
  11. linux桌面只运行浏览器,4个Linux桌面上的轻量级图像浏览器
  12. Fallback class must implement the interface annotated by @FeignClient
  13. 技术融合:使用区块链的5G——未来无线通信的序章
  14. 大数据的学习需要预先了解哪些基础知识?
  15. 2015061710 - 海豹突击队的忠告
  16. android --拍照相册选取图片[兼容小米等其他手机]
  17. 利用R包ggmsa进行多序列比对_2020-05-31
  18. 路径衰耗和阴影衰落及其相关的模型
  19. 4. 串的【朴素模式匹配算法】、【KPM算法:求next数组、nextval数组】
  20. C++设计模式(8)——命令模式

热门文章

  1. c语言中的fock方法输出hello,涉及fork()的C程序输出的说明
  2. 计算机专业报专转本可以志愿,2019年专转本志愿怎么填?专家透露报考窍门
  3. android 8.0手机开服务端,Android 8.0 + Service开启方式兼容处理
  4. 2010 模板下载 罗斯文_俄罗斯签证办理攻略
  5. mysql 布尔型盲注,SQL注入之布尔型注入(MySQL)
  6. 【机器学习算法专题(蓄力计划)】八、机器学习中数据的方差分析
  7. 六十一、Vue中父子组件传值和组件参数校验
  8. 七十九、深度和广度优先搜索算法
  9. java 100例(二)
  10. 三十一、Python读写docx文件