数据结构之线性表的顺序存储结构(数组)的插入与删除
2015-10-07 16:24
435 查看
线性表的顺序存数结构:指的是用一段地址连续的存储单元一次存储线性表的数据元素
在内存中找块内存,把相同数据类型的数据元素一次存放在这块空间中。可以用以为数组来实现顺序存储结构。数组的长度是存放线性表的存储空间的长度,线性表的长度是数据元素实际的个数。线性表的长度应该限于等于数组的长度
优点:无需为表中元素之间的逻辑关系而增加额外的存储空间;可以快速的存取表中任一位置的元素
缺点:插入和删除操作需要移动大量元素;当线性表长度变化较大时,难以确定存储空间的容量;造成存储空间的碎片
实现代码:
在内存中找块内存,把相同数据类型的数据元素一次存放在这块空间中。可以用以为数组来实现顺序存储结构。数组的长度是存放线性表的存储空间的长度,线性表的长度是数据元素实际的个数。线性表的长度应该限于等于数组的长度
优点:无需为表中元素之间的逻辑关系而增加额外的存储空间;可以快速的存取表中任一位置的元素
缺点:插入和删除操作需要移动大量元素;当线性表长度变化较大时,难以确定存储空间的容量;造成存储空间的碎片
实现代码:
#include<stdio.h> #define size 50 int getLength(char *string){//获取字符串长度 int i = 0; while(string[i] != '\0' ){ i++; } return i+1; } int insert(char * string , int i , char newChar,int *length){//在字符串 string 指定位置 i 插入新字符newChar,更改字符串长度 length int j = *length; if( i <= 0 || i > *length){//指定位置不合法 return 0; } if( i < *length){ //指定位置在字符串中间,从末尾开始至指定位置的字符全部往后移一位 for(; j >= i ; j--){ string[j] = string[j-1]; } string[j] = newChar;//指定位置更换成新字符 } *length += 1;//字符串长度增加1 return 1; } int deleteCh(char *string , int i, char *deleteChar,int *length){//删除字符串string 位置 i上的字符,deleteChar记录删除字符,更改字符串的长度length int j ; char status[10]; char *p = status; if(i <= 0 || i > *length){// 位置i不合法 return 0; } if(i < *length){//位置在字符串中间 *deleteChar = string[i-1];//deleteChar记录删除字符 for( j = i-1 ; j < *length ; j++ ){//从删除字符位置i开始的后面所有字符往前移一位 string[j] = string[j+1]; } string[j] = '\0';//设置末尾字符为结束字符 } *length -=1;//字符串长度减1 return 1; } void main(){ char array[size]; char *string = array;//字符串 int length ;//记录字符串的长度 char deleteChar;//记录被删除的字符 int insertPosition;//插入的位置 int deletePosition;//删除的位置 printf("please input a string:"); scanf("%s",string);//输入一串字符 printf("\n"); length = getLength(string);//返回字符串的长度 printf("%d\n",length); printf("请输入插入位置:");//输入插入的位置 scanf("%d",&insertPosition); insert(string,insertPosition,'A',&length);//在string字符串中的insertPosition位置上插入字符A printf("%s\n",string); printf("请输入删除的位置:"); scanf("%d",&deletePosition);//输入删除位置 deleteCh(string,deletePosition,&deleteChar,&length); printf("%s\t删除的字符为:%c\n",string,deleteChar); }
相关文章推荐
- 数据结构例程——对称矩阵的压缩存储及基本运算
- 数据结构实验1(顺序表逆置以及删除)
- 数据结构例程——串的模式匹配(KMP算法)
- 数据结构 三元组 C语言实现
- 数据结构例程——串的模式匹配(Brute-Force算法)
- 数据结构例程——串的顺序存储应用
- Trie树和其它数据结构的比较
- XML,JSON数据结构解析
- 数组中出现次数超过一半的数字
- 数据结构之链栈
- 数据结构之静态链表
- 数据结构之单链表
- 数据结构之顺序表的操作
- 约瑟夫环(N个人围桌,C语言,数据结构)
- 数组实现约瑟夫循环
- 顺序查找
- 【数据结构】树形结构:二叉树&树
- 堆和栈的区别(转过无数次的文章)
- 图论&数据结构——并查集
- 【数据结构】线性结构:栈&队列&数组