博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构—顺序表的插入算法
阅读量:5859 次
发布时间:2019-06-19

本文共 1135 字,大约阅读时间需要 3 分钟。

 

 
  1. /*ListInsert(*L,i,e):在线性表L中的第i个位置插入新元素e,L的长度加1*/ 
  2. /* 
  3. 顺序存储线性表的插入算法思路: 
  4. 1。如果插入的位置不合理,抛出异常 
  5. 2。如果线性表的长度大于数组的长度,则抛出异常或动态增加容量 
  6. 3。从最后一个元素开始向前遍历到第i个位置,分别将他们都向后移动一个位置 
  7. 4。将要插入元素填入位置i处 
  8. 5。表长加1 
  9. */ 
  10.   
  11. #include <iostream> 
  12. using namespace std; 
  13. typedef int datatype; 
  14.   
  15. /*顺序线性表的存储结构*/ 
  16. #define MAXSIZE 100 
  17. typedef struct 
  18.     datatype data[MAXSIZE]; 
  19.     int len; 
  20. }SequenList; 
  21.   
  22.  int insert(SequenList *L,int i,int e) 
  23. {  
  24.     int j; 
  25.     if (i < 1 || i > L->len+1 || L->len >= MAXSIZE) /*判断位置i是否存在以及是否有空的*/ 
  26.     {    
  27.         printf( "Error");                   /*存储单元*/ 
  28.     } 
  29.     else 
  30.     {    
  31.         /*for(j=(*L).len-1;j>=i-1;j--)*/ 
  32.             for(j=L->len-1;j>=i-1;j--) 
  33.                 { 
  34.             /*将要插入位置后数据元素向后移一位 */    
  35.             L->data[j+1]=L->data[j];  
  36.         } 
  37.             L->data[i-1]=e; /*将新元素插入*/ 
  38.             L->len=L->len+1; 
  39.        } 
  40.     return 0; 
  41.      
  42. int main(void
  43.     int i,InsertData,InsertLocation; 
  44.     SequenList List; 
  45.         List.len=0;//终端节点下标 
  46.     for(i=0;i<5;i++) 
  47.     {   /*随机生成5个数*/ 
  48.         List.data[i]=rand()%10; 
  49.         List.len++; 
  50.          
  51.         cout<<List.data[i]<<"  "; } 
  52.         cout<<endl; 
  53.         cout<<"输入要添加的数据:"
  54.         cin>>InsertData; 
  55.             cout<<"输入要添加的位置:"
  56.         cin>>InsertLocation; 
  57.         insert(&List,InsertData,InsertLocation); 
  58.             for(i=0;i<List.len;i++) 
  59.             {    
  60.             cout<<List.data[i]<<"  "
  61.             } 
  62.         /* 暂停一会,也可以使用system("pause") */ 
  63.                   getchar(); 
  64.                   getchar(); 
  65.         cout<<endl; 
  66.   
  67.         return 0; 
  68.   
  69.  } 
 
Microsoft Visual C++ 6.0 下运行成功。

转载地址:http://naejx.baihongyu.com/

你可能感兴趣的文章
反射封装request参数为对象
查看>>
PostgreSQL backup and recovery - online logical backup & recovery
查看>>
类似微信首页弹性滚动和惯性滚动效果的实现——OverScroll
查看>>
试读angular源码第一章:开场与platformBrowserDynamic
查看>>
android插件自定义之多渠道打包插件(支持微信资源混淆andResGuard)
查看>>
一道关于面向对象面试题
查看>>
php之正则表达式函数总结
查看>>
Web前端-Ajax基础技术(下)
查看>>
支配vue框架初阶项目之博客网站-注册页面-单选按钮
查看>>
小tips-一种移动端模拟实现返回拦截的方案
查看>>
刨根问底区块链 —— 基础篇
查看>>
3 jQuery学习笔记第三节 Jq的设计思想之写法
查看>>
swift GCD 的一些高级用法
查看>>
【拒绝一问就懵】之你多少要懂点内存回收机制
查看>>
【深入浅出express】- express入门01
查看>>
Safari无痕模式下,storage被禁用问题
查看>>
旧版Windows远程桌面服务存在漏洞 恐让黑客有机可趁
查看>>
es6-let与const
查看>>
微信小程序修改switch组件大小
查看>>
BCH测试网上出现第一个UTXO证明
查看>>