嵌入式菜鸟算法②---顺序表操作
来源:互联网 发布:ajax传递对象数组 编辑:程序博客网 时间:2024/05/17 06:05
主要内容:顺序表插入、删除
特点:存储结构和逻辑结构顺序一样
最大优点:可以方便的随机存取表中任一个结点
缺点:
a、插入或删除操作,除表尾的位置外,其它位置必须移动大量的结点,平均要移动约一半的结点,平均时间复杂度为O(n),效率较低
b、顺序表所占空间必须是连续的,结点数并不固定,只能预先分配空间(静态分配)。难以确定合适的存储空间
#include <stdio.h> #include <stdlib.h>#define MAXSIZE 1024typedef int datatype;typedef struct{datatype data[MAXSIZE];int last; // subscript of linear list's last node,i.e. length is n = last + 1 }sequenlist;/* linear list insert operate */int Insert(sequenlist* L, datatype x, int i){int j;if (L->last >= MAXSIZE - 1){printf("space overflow!\n");return 0;}else if (i < 1 || (i > L->last + 2)){printf("insert in a invalide position!\n");return 0;}else{for (j = L->last; j >= i-1; j--){L->data[j+1] = L->data[j]; // give space for insert new data }L->data[i-1] = x;L->last = L->last+1;}return 1;}/* linear list delete operate */int Delete(sequenlist* L, int i){int j;if (i < 1 || (i > L->last + 1)){printf("delete position is invalide!\n");return 0;}else{for (j = i; j <= L->last; j++){L->data[j-1] = L->data[j];}L->last = L->last-1;}return 1;}int main(){sequenlist *L;int i, ch, n;while(1) // shouw the menu{printf("\n*****Please select:");printf("\n(1) input sequenlist");printf("\n(2) insert sequenlist");printf("\n(3) delete sequenlist");printf("\n*****End*************");ch = getch(); // get keyboard inputswitch(ch){case '1':printf("\nPlease input your sequenlist's number n = ");scanf("%d", &n);L = (sequenlist*)malloc(sizeof(sequenlist));for (i = 0; i < n; i++){printf("\n Please input %dth interger:", i+1);scanf("%d", &L->data[i]);}L->last = n-1;printf("your input sequenlist is:\n");for (i = 0; i<=L->last; i++){printf("%d\n", L->data[i]);}break;case '2':printf("\n Please input the value to insert:");scanf("%d", &n);printf("\nPlease input the position to insert");scanf("%d", &i);printf("\n");if (Insert(L, n, i)){printf("the insert result is:\n");for (i = 0; i <= L->last; i++){printf("%d", L->data[i]) ;printf("\n");}}break; case '3': printf("\n Please input the delete data's position:"); scanf("%d", &i); printf("\n"); if (Delete(L, i)) { printf("the delete result is:\n"); for (i = 0; i<=L->last; i++) { printf("%d\n", L->data[i]); } } break; case '4': return; default: return; }}return 0;}
输出结果:
0 0
- 嵌入式菜鸟算法②---顺序表操作
- 嵌入式菜鸟算法③---链表操作
- 顺序表操作算法实现
- 顺序表的算法操作
- 嵌入式菜鸟算法①---算法入门基础
- 顺序线性表的基本操作算法
- Java算法(顺序表操作实例)
- 数据结构算法实现-顺序表基本操作
- 嵌入式菜鸟
- 顺序队列的算法操作
- 妙趣横生的算法(1)之顺序表操作
- 算法学习第一课静态顺序表操作
- 算法学习第一课静态顺序表操作—练习
- 菜鸟论嵌入式系统
- 嵌入式入门菜鸟篇
- 算法4-9:BST顺序操作
- 修正KMP算法 顺序串操作
- 顺序表的操作
- 关于这段时间的心历路程
- Nagios远程监控软件的安装与配置详解
- Eclipse编辑器基本设置
- hdu 2852 KiKi's K-Number(BIT, 线段树,treap)
- 大内存( Very Large Memory)和 大页( HugePages)系列二--配置大页
- 嵌入式菜鸟算法②---顺序表操作
- HTML5实例——表单
- 一个苹果证书怎么多次使用——导出p12文件
- 股市日记之三:“股神和SB”
- Hbase系统架构及数据结构
- bzoj 1069: [SCOI2007]最大土地面积
- Android开发中对应的三种照片的尺寸
- 开源软件、开源硬件,都不如一个开源的社会
- POJ2240 - Arbitrage