顺序表的操作

  • [x] 向有序顺序表插入一个元素
  • [x] 顺序表的冒泡排序
  • [x] 顺序表的删除操作
  • [x] 顺序表中元素的查找
  • [x] 顺序表的逆置
  • [x] 删除顺序表中的相同元素
  • [x] 向顺序表的指定位置插入元素
  • [x] 打印顺序表

顺序表的存储结构

#define maxsize 100        //存储空间的分配量 //定义顺序表数据类型
typedef struct{int data[maxsize];int last;              //存放表中最后一个元素的下标
}sequenlist;

顺序表的冒泡排序

void list_bubble_sort(sequenlist *p)//max to min
{int i,j;int temp;for(i=0; i< p->last; i++)//attention{for(j=0; j< p->last-i; j++){if(p->data[j] < p->data[j+1]){temp = p->data[j];p->data[j] = p->data[j+1];p->data[j+1] = temp;    }}}
}

顺序表的删除操作

nt delete_1(sequenlist *s,int del) //删除函数
{int temp;for(int i=0; i <= s->last; i++){if(del == s->data[i]){temp = i;for(int j=i; j<s->last; j++){s->data[j] = s->data[j+1];}s->last = s->last - 1;return 0;//删除第一个与del相同的元素,函数结束 }}//要删的那个元素不在表中 printf("the element you want to delete is not in the sequenlist!\n");
}

顺序表中元素的查找

int search(sequenlist *s,int key)    //查找函数
{for(int i=0; i<= s->last; i++){if(key == s->data[i]){printf("exist !\n");return 0;}}printf("not found !\n");return 0;
}

顺序表的逆置

void reverse(sequenlist *s)//逆置函数
{int i,j;int temp;int last_temp = s->last;for(i=0; i<= s->last/2; i++){temp = s->data[i];s->data[i] = s->data[last_temp];s->data[last_temp] = temp;        last_temp--;}
}

删除顺序表中的相同元素

void delete_same(sequenlist *s)//删除表中相同的元素
{int i,j;int temp;for(i=0; i<=s->last; i++){ for(j=1; j<=s->last; j++){if(s->data[j] == s->data[i])//元素相同 {for(int k=j; k<s->last; k++){s->data[k] = s->data[k+1];}s->last = s->last - 1; }}   }
}

向顺序表的指定位置插入元素

int insert(sequenlist *L,int i,int x) //指定位置,插入
{int j;if(((*L).last) >= maxsize-1){printf("the list is overflow!\n");return (0);}else{if((i<1)||(i>(*L).last+2)){printf("position is not correct!\n");return (0);}else{for(j=(*L).last;j>=i-1;j--){(*L).data[j+1]=(*L).data[j];                 }(*L).last=(*L).last+1;              (*L).data[i-1]=x;return (0);}}
}

向顺序表的指定位置插入元素

int insert(sequenlist *L,int i,int x) //指定位置,插入
{int j;if(((*L).last) >= maxsize-1){printf("the list is overflow!\n");return (0);}else{if((i<1)||(i>(*L).last+2)){printf("position is not correct!\n");return (0);}else{for(j=(*L).last;j>=i-1;j--){(*L).data[j+1]=(*L).data[j];                 }(*L).last=(*L).last+1;              (*L).data[i-1]=x;return (0);}}
}

打印顺序表

void print_list(sequenlist *s)   //打印顺序表
{int i;for(i=0; i<=s->last; i++){printf("%3d",s->data[i]);}
}

试着煲下汤

/*
* author: shansan.top
* date: 2018/12/12
* version: 1.0
*/#include<stdio.h>
#define maxsize 100//定义顺序表数据类型
typedef struct{int data[maxsize];int last;
}sequenlist;int search(sequenlist *s,int key)    //查找函数
{for(int i=0; i<= s->last; i++){if(key == s->data[i]){printf("exist !\n");return 0;}}printf("not found !\n");return 0;
}int delete_1(sequenlist *s,int del) //删除函数
{int temp;for(int i=0; i <= s->last; i++){if(del == s->data[i]){temp = i;for(int j=i; j<s->last; j++){s->data[j] = s->data[j+1];}s->last = s->last - 1;return 0;//删除第一个与del相同的元素,函数结束  }}//要删的那个元素不在表中 printf("the element you want to delete is not in the sequenlist!\n");
}void print_list(sequenlist *s)   //打印顺序表
{int i;for(i=0; i<=s->last; i++){printf("%3d",s->data[i]);}
}void reverse(sequenlist *s)//逆置函数
{int i,j;int temp;int last_temp = s->last;for(i=0; i<= s->last/2; i++){temp = s->data[i];s->data[i] = s->data[last_temp];s->data[last_temp] = temp;        last_temp--;}
}void list_bubble_sort(sequenlist *p)//max to min
{int i,j;int temp;for(i=0; i< p->last; i++)//attention{for(j=0; j< p->last-i; j++){if(p->data[j] < p->data[j+1]){temp = p->data[j];p->data[j] = p->data[j+1];p->data[j+1] = temp;    }}}
}void insert_in_order_list(sequenlist *s,int value)//有序表中插入元素
{int i,j;int count=0;//int temp = s->last+1;for(i=0; i<=s->last; i++){count++;if( value <= s->data[i]){s->last = s->last + 1;for(j=s->last; j>i; j--){s->data[j] = s->data[j-1];}s->data[i] = value;return ;//结束函数 }}//printf("i=%d",i);//printf("s->last=%d\n",s->last);if(i > s->last-1){s->last = s->last + 1;s->data[s->last] = value;}
}int insert(sequenlist *L,int i,int x) //指定位置,插入
{int j;if(((*L).last) >= maxsize-1){printf("the list is overflow!\n");return (0);}else{if((i<1)||(i>(*L).last+2)){printf("position is not correct!\n");return (0);}else{for(j=(*L).last;j>=i-1;j--){(*L).data[j+1]=(*L).data[j];                 }(*L).last=(*L).last+1;              (*L).data[i-1]=x;return (0);}}
}void delete_same(sequenlist *s)//删除表中相同的元素
{int i,j;int temp;for(i=0; i<=s->last; i++){ for(j=1; j<=s->last; j++){if(s->data[j] == s->data[i])//元素相同 {for(int k=j; k<s->last; k++){s->data[k] = s->data[k+1];}s->last = s->last - 1; }}   }
}int main()
{sequenlist p={{1,3,2,6,5,4,9,7,8},8};//这里有9个数,但数组下表是从0开始的,所以 p.last = 8 print_list(&p);printf("\n");//查找printf("please input a value which you want: ");int value;//C++语法可以临时定义一个变量,C语言不可以(需放在开头)。 scanf("%d",&value); //search(&p,10);search(&p,value);print_list(&p);printf("\n\n");//删除表中的指定元素 delete_1(&p,8);printf("after delete:\n"); print_list(&p);//逆置顺序表 printf("\n\nafter reverse:\n");reverse(&p);print_list(&p);//冒泡排序 printf("\nafter sort:\n");printf("\n");//list_bubble_sort(&try_1);list_bubble_sort(&p);print_list(&p); //往有序顺序表中插入一个元素printf("\n\n");sequenlist try_1 = {{1,2,3,5,6,7},5};print_list(&try_1);printf("\n");printf("please input the value that you wan to insert into the sequenlist: ");int data;scanf("%d",&data);insert_in_order_list(&try_1,data);//insert_in_order_list(&try_1,9);print_list(&try_1);//删除表中相同的元素printf("\n\n");sequenlist try_2= {{1,1,2,2,3,3,4,4},7};print_list(&try_2);printf("\ndelete the same element:\n");delete_same(&try_2);print_list(&try_2);printf("\n");//另一种玩法int n;int i;printf("\nplease input the number of elements: ");scanf("%d",&n);printf("please input %d values:\n",n); sequenlist try_3;try_3.last = n-1;//注意,数组的小标从0开始 for(i=0; i<=try_3.last; i++){scanf("%d",&try_3.data[i]);}print_list(&try_3);printf("\n\n");//在指定位置插入 insert(&try_3,1,22);print_list(&try_3);return 0;
}

程序运行结果

转载于:https://www.cnblogs.com/sikongji-yeshan/p/10121654.html

线性表之顺序存储-顺序表相关推荐

  1. 数据结构之【线性表】(顺序表、链表的基本操作实现)

    概念 线性表:是N个数据元素的有限序列. 顺序表:用一组地址连续的存储单元依次存储[线性表 ]的数据元素.(区别于有序表:表中的数据元素存在非递增或非递减有序) 链表:用一组任意的存储单元来存储[线性 ...

  2. (线性表)设顺序表A中的数据元素递增有序,试写一程序,将x插入到顺序表的适当位置上,使该表仍然有序。

    (线性表)设顺序表A中的数据元素递增有序,试写一程序,将x插入到顺序表的适当位置上,使该表仍然有序. [算法的基本思想] 建立顺序表,在表中从后往前查找要插入的元素的位置,直到找到第一个比X小的数,并 ...

  3. python顺序表的实现_数据结构:队列 链表,顺序表和循环顺序表实现(python版)...

    链表实现队列: 尾部 添加数据,效率为0(1) 头部 元素的删除和查看,效率也为0(1) 顺序表实现队列: 头部 添加数据,效率为0(n) 尾部 元素的删除和查看,效率也为0(1) 循环顺序表实现队列 ...

  4. 顺序表专题(1)——顺序表

    顺序表 概念 基本形式 顺序表基本布局 元素外置的顺序表基本布局 图解 顺序表的实现 一体式实现 分离式结构 图解 元素存储区操作 元素存储区替换 元素存储区扩充 概念 需求:将一组(通常是同一类型) ...

  5. 最基本的顺序表(经典顺序表)

    // 顺序表.cpp -- 最基本的顺序表(经典顺序表) // 完整的class.// List abstract class -- 线性表的C++抽象类声明 template<class El ...

  6. 静态顺序表和动态顺序表区别

    静态顺序表的定义 #define MaxSize 10 //定义最大长度 typedef int ElemType; typedef struct{ Elemtype data[MaxSize]: / ...

  7. 静态顺序表和动态顺序表区别的优缺点比较

    静态顺序表 typedef int DataType;#define MAX_SIZE (100)typedef struct SeqList {DataType array[MAX_SIZE];in ...

  8. 【经典回放】多种语言系列数据结构线性表之一:顺序表

    一.实验任务描述 建立线性表的ADT后,编程完成: 1 用C语言完成一个顺序表结构: 2 为顺序表完成追加.删除.插入.查找的功能: 3 建立一个链表的结点: 4 完成链表的追加.删除.插入功能: 5 ...

  9. 数据结构与算法之线性表(超详细顺序表、链表)

    原创公众号:bigsai 文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star 前言 通过前面数据结构与算法基础知识我么知道了数据结构的一些概念和重要性,那么我们今天总结下线性表相关的内容 ...

最新文章

  1. SpringCloud实战小贴士:Zuul的路径匹配
  2. java新人面试经历_分享近两周以来的真实面试经历
  3. python的浮点数_Python中整数和浮点数
  4. 安卓使用Audio Record自定义录音
  5. unity3D 最全资源合集分享
  6. anaconda 修复快捷方式
  7. Visual C++课程设计选题
  8. Java itext tiff转换pdf
  9. 大数据系列之Java调用elasticsearch的增删查改聚合
  10. linux使用入门debian,Debian 7.7入门安装与配置
  11. 加壳软件测试,VMProtect2.04加壳程序从入门到精通
  12. Couldn‘t terminate the existing process for com.hopechart.gallery
  13. 云计算运维工程师是做什么的?需要经常加班吗?
  14. js 控制输入框禁止使用输入法
  15. beyond compare免安装版
  16. C/C++黑魔法-三元运算符简洁写法
  17. Influx 产品常见问题及使用技巧(3)
  18. win11,google chrome没有声音怎么办
  19. atx860和java_捷安特XTC800和ATX860有什么区别
  20. 未来展望 计算机,计算机的未来展望(The future of computers).doc

热门文章

  1. 上云数据分析首选产品Quick BI的可视化之路
  2. 回看2020-数据库大讲堂
  3. 精选案例 | “虫虫音乐”如何做到搜索CTR提高150%
  4. 火了 2 年的服务网格究竟给微服务带来了什么?
  5. 为了帮视障人士“看见”,阿里工程师做了哪些努力?
  6. win7系统开启telnet服务器,小编教你win7系统开启Telnet命令的详细教程
  7. (基础)HTML文档结构知识点讲解
  8. Demo能为游戏带来什么?
  9. LOL手游锤石上线吓坏玩家?英雄设计被吐槽,玩家:还我端游锤石
  10. 北京周末去哪儿 —— 玉渊潭