数据结构(四):(顺序表)设计算法删除所有数字字符
好家伙,写作业
什么是顺序表:
顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、
使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,
采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。
----来自百度百科
按我的理解捋一遍:这就是个最简单的数据储存结构,简单到他的结构只有两部分:
typedef struct{
char a[maxsize];
int n;
}sqlist;
储存数据的数组和储存长度的一个int值,它的储存顺序是随机(可以通过下标直接拿到数据,并非链式结构)
上题目
1.一个顺序表中存放字符(只有数字字符和英文字符),编写算法删除所有的数字字符
我们想想,
第一步,用一个顺序表储存这一串字符
第二步,随后在该顺序表中逐个进行判断,若发现数字字符,则将该字符用冒泡法放到最后一位,并记录发现数字字符的个数
第三步,按照数字字符的个数n,去删除顺序表对应的后n位
#include<iostream>
using namespace std;
const int maxsize=100;
typedef struct{
char a[maxsize];
int n;
}sqlist;
int main()
{
sqlist sqlist_1;
int i,j,s=0;
cout<<"输入顺序表的长度"<<endl;
cin>>sqlist_1.n;
cout<<"依次输入字符"<<endl;
for(i=0;i<sqlist_1.n;i++)
{
cin>>sqlist_1.a[i]; //顺序表赋值
}
for(i=0;i<sqlist_1.n;i++)
{
if(sqlist_1.a[i]>'0'&&sqlist_1.a[i]<='9')
{
for(j=i;j<(sqlist_1.n-1);j++)
{
sqlist_1.a[j]=sqlist_1.a[j+1]; //将数子字符移到后面
if(j==i)
{
s++; //记录"数字"字符出现的次数
}
}
i--; //用于判断转移数字字符后,原数字字符的位置的现字符是否还为数字字符
}
}
sqlist_1.n=sqlist_1.n-s;
cout<<"删除数字字符后的顺序表"<<endl; //输出删除数字字符后的顺序表
for(i=0;i<sqlist_1.n;i++)
{
cout<<sqlist_1.a[i]<<"\t";
}
cout<<endl;
return 0;
}
输入输出样式: