好家伙,寫作業
什么是順序表:
順序表是在計算機記憶體中以陣列的形式保存的線性表,線性表的順序存盤是指用一組地址連續的存盤單元依次存盤線性表中的各個元素、
使得線性表中在邏輯結構上相鄰的資料元素存盤在相鄰的物理存盤單元中,即通過資料元素物理存盤的相鄰關系來反映資料元素之間邏輯上的相鄰關系,
采用順序存盤結構的線性表通常稱為順序表,順序表是將表中的結點依次存放在計算機記憶體中一組地址連續的存盤單元中,
----來自百度百科




按我的理解捋一遍:這就是個最簡單的資料儲存結構,簡單到他的結構只有兩部分:
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;
}
輸入輸出樣式:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/526846.html
標籤:其他
上一篇:第 45 屆國際大學生程式設計競賽(ICPC)亞洲區域賽(濟南)-L Bit Sequence
下一篇:演算法題--重建二叉樹
