指尖上的代码[C语言版]-<6>数据结构之顺序表
来源:互联网 发布:网络摄像机有什么用 编辑:程序博客网 时间:2024/04/29 01:31
<6> 数据结构---线性表的顺序存储结构
分析:
代码:
#include "stdio.h"#include "stdlib.h"#define M 20 /*自定义数组大小*/#define Type "%d"typedef int DataType; /*为现有类型创建同义词,自己可更改数据类型*/typedef struct { DataType array[M]; /*数组*/ int subscript; /*数组最后一个元素的下标*/ } sequencetable; /*自定义数据类型sequenacetable*/sequencetable *s; /*定义sequencetable类型的指针变量s*/int flag=0; /*用来标示数组是否初始化了*//*函数声明*/void Initialization();void Print();void Insert();void Delete();int main(void){ int options; printf("数据结构>>线性表的顺序存储结构\n"); printf("1.初始化顺序表\n"); printf("2.浏览顺序表\n"); printf("3.按位置插入元素\n"); printf("4.按位置删除元素\n"); printf("5.退出\n"); while(1) { printf("请选择您要进行的操作:"); scanf("%d",&options); switch(options) { case 1:Initialization();break; case 2:Print();break; case 3:Insert();break; case 4:Delete();break; case 5:free(s);exit(0);break; default:printf("请输入数字1-5进行选择!\n"); } } return 0; }void Delete(){ int locate,i; if(flag==0) { printf("请先对顺序表初始化!\n"); } else { if(s->subscript==-1) { printf("顺序表里暂时没有数据,不能进行删除操作!\n"); } else { printf("请输入您要删除的元素所在的位置(0<位置<=%d):",s->subscript+1); scanf("%d",&locate); if(locate>(s->subscript+1)) { printf("您要删除的元素不存在!\n"); Delete(); } else { if(locate==s->subscript+1) { s->subscript--; } else { for(i=locate;i<=s->subscript;i++) { s->array[i-1]=s->array[i]; } s->subscript--; } printf("元素已成功删除!\n"); } } }}void Insert(){ int locate,i; DataType x; if(flag==0) { printf("请先对顺序表进行初始化!\n"); } else { printf("请输入您想要要插入的位置(1-%d):",M); scanf("%d",&locate); if(locate<=0||locate>M) { printf("您输入的位置不在1-%d之间,请重新输入!\n",M); Insert(); } else { printf("请输入您要插入的元素:"); scanf(Type,&x); if(s->subscript<locate-1) { s->subscript=locate-1; s->array[s->subscript]=x; } else { if(s->subscript==M-1) { if(locate==M) { s->array[s->subscript]=x; } else { for(i=s->subscript-1;i>=locate-1;i--) { s->array[i+1]=s->array[i]; } s->array[locate-1]=x; } } else { s->subscript++; for(i=s->subscript-1;i>=locate-1;i--) { s->array[i+1]=s->array[i]; } s->array[locate-1]=x; } } printf("元素已成功插入顺序表!\n"); } }}void Print(){ int i; if(flag==0) { printf("请先对顺序表初始化!\n"); } else if(s->subscript==-1) { printf("顺序表里暂时没有数据!\n"); } else { for(i=0;i<=s->subscript;i++) { printf(Type,s->array[i]); printf(" "); } printf("\n"); }}void Initialization(){ s=(sequencetable *)malloc(sizeof(sequencetable)); /*为顺序表申请内存空间*/ s->subscript=-1; flag=1; printf("顺序表初始化已完成!\n");}
编译结果:
点石成金 写于 2012/08/12/14:54
- 指尖上的代码[C语言版]-<6>数据结构之顺序表
- 指尖上的代码[C语言版]-<7>数据结构之单链表
- 指尖上的代码[C语言版]-<1>
- 指尖上的代码[C语言版]-<2>
- 指尖上的代码[C语言版]-<3>
- 指尖上的代码[C语言版]-<4>
- 指尖上的代码[C语言版]-<5>
- 数据结构(c语言版)之顺序表
- 数据结构c语言版之顺序表的删除
- 数据结构之对顺序栈的操作(C语言版)
- 熟悉笔记—数据结构(c语言版) 之 顺序表
- 数据结构c语言版之顺序表元素插入算法
- C语言版数据结构之顺序栈
- 学习笔记------数据结构(C语言版)数组之行逻辑链接的顺序表
- 顺序表---数据结构C语言版(1)
- 数据结构(C语言版)规范代码之图(邻接表的拓扑排序)
- 数据结构C语言版之链表的操作
- 数据结构之对线性表的操作(C语言版)
- jQuery 插件 表格高亮显示选中行 全选、反选(四种模式)
- 图片异步加载
- 比较值得看的技术博客
- linux下gcc相用编译器选项
- Js选中checkbox后获取table内一行TD所有数据
- 指尖上的代码[C语言版]-<6>数据结构之顺序表
- ARM NEON Optimization
- Objective-C语法之字符串那些事
- java 可变参数方法
- C++ primer读书笔记 第15章
- Windows NT引导过程源代码分析
- 数据结构--二叉树--层次遍历二叉树(顺序遍历)
- C#的显式数值转换
- 如何在Ubuntu 10.04下编译Android2.3源代码以及制作自己的SDK