1. #include<stdio.h>
  2. #include<time.h>
  3. #include<stdlib.h>
  4. #define MAXSIZE 20 //初始长度
  5.  
  6. typedef int ElemType; //类型为int
  7. typedef struct{
  8. ElemType data[MAXSIZE];//数组。存储元素
  9. int length;
  10. }SqList;
  11. //顺序表的初始化
  12. SqList Init(){
  13. //创建一个空的线性表L,时间复杂度O(1)
  14. SqList L; //定义
  15. L.length=;//初始长度为0
  16. return L; //返回空顺序表
  17. }
  18. //顺序表的建立
  19. SqList Create(SqList L)
  20. {
  21. int i;
  22. srand((unsigned)time(NULL));
  23. for(i=;i<;i++)
  24. {
  25. L.data[i]=rand()%;
  26. L.length++;
  27. }
  28. return L;
  29. }
  30. //用e返回线性表中第i个元素的值
  31. //此时L应该已经存在
  32. ElemType GetElem(SqList L,int i)
  33. {
  34. if(i<||i>L.length)
  35. {
  36. printf("查找位置错误!\n");//位置是否合法
  37. return ;
  38. }
  39. else
  40. return L.data[i-];
  41. }
  42. //顺序表的插入
  43. SqList ListInsert(SqList L, int i, ElemType x)
  44. { //在顺序表中的第i个位置插入元素x
  45.  
  46. if(L.length == MAXSIZE)
  47. printf("表已经满了\n");//插入时,必须检查表是否已经满了。否则会出现溢出错误
  48. else if(i < || i > L.length)
  49. printf("插入位置错误\n");//判断插入位置的有效性
  50. int j;
  51. for(j = L.length-; j >= i - ; j--)//第i个位置元素逐个后移
  52. L.data[j+] = L.data[j];
  53. L.data[i-] = x; //插入元素x
  54. L.length++; //顺序表长度增1
  55.  
  56. return L;
  57.  
  58. }
  59.  
  60. //删除元素
  61. SqList ListDelete(SqList L,int i)
  62. {
  63. int k;
  64. if(L.length==) //线性表为空
  65. printf("表为空无法删除");
  66. if(i<||i>L.length)
  67. printf("删除的位置不正确");
  68. if(i<L.length)
  69. {
  70. for(k=i;k<L.length;k++)//将删除的位置后继元素前移
  71. L.data[k-]=L.data[k];
  72. L.length--;
  73. }
  74. return L;
  75. }
  76. int main()
  77. {
  78. SqList l;
  79. l=Init();
  80. l=Create(l);
  81. char choose;//操作选择
  82. int find;//查找操作
  83. int found;//查找到的元素
  84.  
  85. int position;//标记元素的位置
  86. int value;//插入的元素
  87.  
  88. int i;
  89.  
  90. printf("初始化完成.........\n");
  91.  
  92. while(true){
  93.  
  94. printf("\n1.查看顺序表 \n2.查找元素 \n3.插入元素 \n4.删除元素 \n5.退出 \n请选择你的操作。。。");
  95. scanf("%c",&choose);
  96.  
  97. switch(choose){
  98. case '':
  99. system("cls");
  100. printf("查看线性表:");
  101. for(i=;i<l.length;i++)
  102. {
  103. printf("%d ",l.data[i]);
  104. }
  105. printf("\n");
  106. break;
  107. case '':
  108. system("cls");
  109. printf("输入你要查找第几个元素?\n");
  110. scanf("%d",&find);
  111. found=GetElem(l,find);
  112. printf("第%d个值为%d\n",find,found);
  113. break;
  114. case '':
  115. system("cls");
  116. printf("请输入要插入的元素位置:");
  117. scanf("%d",&position);
  118. printf("输入要插入的元素的值:");
  119. scanf("%d",&value);
  120. l=ListInsert(l,position,value);
  121.  
  122. printf("\n插入后的顺序表为:");
  123. for(i=;i<l.length;i++)
  124. {
  125. printf("%d ",l.data[i]);
  126. }
  127. printf("\n");
  128. break;
  129. case '':
  130. system("cls");
  131. printf("请输入要删除掉的元素位置:\n");
  132. scanf("%d",&position);
  133. l=ListDelete(l,position);
  134. printf("\n删除后的顺序表为:");
  135. for(i=;i<l.length;i++)
  136. {
  137. printf("%d ",l.data[i]);
  138. }
  139. printf("\n");
  140. break;
  141. case '':
  142. exit();
  143.  
  144. }
  145.  
  146. }
  147. system("pause");
  148. }

c语言线性表的更多相关文章

  1. C语言 线性表 双向链式结构 实现

    一个双向链式结构实现的线性表 duList (GCC编译). /** * @brief 线性表双向链表结构 * @author wid * @date 2013-10-28 * * @note 若代码 ...

  2. C语言 线性表 链式表结构 实现

    一个单链式实现的线性表 mList (GCC编译). /** * @brief 线性表的链式实现 (单链表) * @author wid * @date 2013-10-21 * * @note 若代 ...

  3. C语言 线性表 顺序表结构 实现

    一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...

  4. C语言——线性表及其应用

    程序要求 1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度.2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68.3.建立一 ...

  5. C语言--线性表

    #include<stdio.h>#include<stdlib.h>#include<string.h>#define LIST_SIZE 100#define ...

  6. 数据结构算法C语言实现(二)---2.3线性表的链式表示和实现之单链表

    一.简述 [暂无] 二.头文件 #ifndef _2_3_part1_H_ #define _2_3_part1_H_ //2_3_part1.h /** author:zhaoyu email:zh ...

  7. 数据结构算法C语言实现(一)---2.2线性表的顺序表示和实现

    注意: 虽然是用C语言实现,但是考虑到使用了一个C++的特性----引用以简化代码,所以所有的代码均以cpp作为后缀,用g++编译(以后不做说明). g++版本: 一.简述 本节主要讲述线性表的顺序实 ...

  8. 线性表之顺序存储结构(C语言动态数组实现)

    线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...

  9. 数据结构-线性表的链式存储相关算法(C语言实现)

    链表的简单介绍 为什么需要线性链表 当然是为了克服顺序表的缺点,在顺序表中,做插入和删除操作时,需要大量的移动元素,导致效率下降. 线性链表的分类 按照链接方式: 按照实现角度: 线性链表的创建和简单 ...

随机推荐

  1. linux下C++对线程的封装

    之前一直是使用C语言,前段时间转做C++.无论使用什么语言,多线程编程都是不可或缺的.最近项目中又用到了线程,现在将线程的封装做出总结: 1.线程类中应该包含线程ID.线程的状态以及线程基本操作等. ...

  2. 切记ajax中要带上AntiForgeryToken防止CSRF攻击

    在程序项目中经常看到ajax post数据到服务器没有加上防伪标记,导致CSRF被攻击,下面小编通过本篇文章给大家介绍ajax中要带上AntiForgeryToken防止CSRF攻击,感兴趣的朋友一起 ...

  3. Android studio checkstyle 使用

    首先要安装CheckStyle-IDEA插件,官网:https://plugins.jetbrains.com/plugin/1065 打开Android studio进入设置->Plugins ...

  4. uboot相关命令及用法

    进入uboot时,在命令行上敲“?” ,回车就会打印出在uboot里可用的命令: #??       - alias for 'help'base    - print or set address ...

  5. 安装4.x版本的express开发框架

    错误版本(未更新前的安装方法,更新后就不是这么安装了,好多网上的教程还是这种方法,所以这里先写明了,旧版这里是可以通过的,但是新版4.x就不行了,请用分割线下边的方法)   本文演示在Linux上安装 ...

  6. linux shell--算术运算

    求和: 方法一.使用命令替换法: #!/bin/bash read -p 'input number a...' numA read -p 'input number b...' numB #这里有两 ...

  7. Nginx 模块开发(1)—— 一个稍稍能说明问题模块开发 Step By Step 过程

    1. Nginx 介绍        Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/S ...

  8. Eclipse Plugin Dev Materials

    以下资料是本人在开发Eclipse 插件时候收集的一些比较有用的资料Link,和大家分享下. 比较权威的资料: Helpful Eclipse Plugin Websites: Eclipse Art ...

  9. INNO SETUP 获得命令行参数

    原文 http://www.cnblogs.com/ahuo/archive/2009/07/30/1534998.html );           Result := CmdLine;       ...

  10. 如何把Python2的代码转换为Python3的代码

    如何把Python2的代码转换为Python3的代码 注: 如果对于python2和python3不熟悉的,可以参考: [整理]总结Python2(Python 2.x版本)和Python3(Pyth ...