順序表應用1:多餘元素刪除之移位演算法
Problem Description
一個長度不超過10000資料的順序表,可能存在著一些值相同的“多餘”資料元素(型別為整型),編寫一個程式將“多餘”的資料元素從順序表中刪除,使該表由一個“非純表”(值相同的元素在表中可能有多個)變成一個“純表”(值相同的元素在表中只保留第一個)。
要求:
1、必須先定義線性表的結構與操作函式,在主函式中藉助該定義與操作函式呼叫實現問題功能;
2、本題的目標是熟悉順序表的移位演算法,因此題目必須要用元素的移位實現刪除;
Input
第一行輸入整數n,代表下面有n行輸入;
之後輸入n行,每行先輸入整數m,之後輸入m個資料,代表對應順序表的每個元素。
Output
輸出有n行,為每個順序表刪除多餘元素後的結果
Sample Input
4
5 6 9 6 8 9
3 5 5 5
5 9 8 7 6 5
10 1 2 3 4 5 5 4 2 1 3
Sample Output
6 9 8
5
9 8 7 6 5
1 2 3 4 5
這個題的主要思路是:兩重for迴圈,找到重複元素之後將排在後面的元素之後的數前移,並將長度減一。
在做題的過程中遇到了:error: expected ';', ',' or ')' before '&' token
經過查詢後得知,可以用指標來代替引用,在主函式中傳進來地址;或者是使用C++來進行編譯。
程式碼如下:
#include<iostream>
#include<stdio.h>
#define listMax 100000
using namespace std;
typedef int element;
typedef struct{
element *elem;
int length;
int listSize;
}Elemlist;
void creat(Elemlist &L,int n){
L.elem = new int[listMax];
L.length = n;
L.listSize = listMax;
}
void input(Elemlist &L){
int i;
for(i = 0 ; i < L.length;i++){
scanf("%d",&L.elem[i]);
}
}
void del(Elemlist &L,int j){
int i;
for(i = j ; i < L.length;i++){
L.elem[i] = L.elem[i + 1];
}
L.length--;
}
void compare(Elemlist &L){
int i,j;
for(i = 0; i < L.length - 1;i++){
for(j = i + 1;j < L.length; j++){
if(L.elem[i] == L.elem[j]){
del(L,j);
j--;
}
}
}
}
void output(Elemlist &L){
int i;
for(i = 0; i < L.length - 1;i++){
printf("%d ",L.elem[i]);
}
printf("%d\n",L.elem[i]);
}
int main(){
Elemlist L;
int a,b;
scanf("%d",&a);
while(a--){
scanf("%d",&b);
creat(L,b);
input(L);
compare(L);
output(L);
}
return 0;
}
寒假的時間刷完!
相關文章
- 順序表應用2:多餘元素刪除之建表演算法演算法
- 順序表應用3:元素位置互換之移位演算法演算法
- 順序表應用4:元素位置互換之逆置演算法演算法
- 順序表應用5:有序順序表歸併
- 順序表應用6:有序順序表查詢
- 刪除順序表L中下標為p(0≤p≤length-1)的元素,成功返回1,否則返回0,並將被刪除元素的值賦給e
- 工作293:調節刪除順序刪除
- Linux刪除多餘核心Linux
- HashMap 之元素刪除HashMap
- C++ 順序容器的刪除操作C++
- Linux多ip地址如何刪除多餘ipLinux
- 調整陣列元素順序演算法陣列演算法
- Centos 6.9 刪除多餘的核心版本CentOS
- 順序表應用8:最大子段和之動態規劃法動態規劃
- 資料結構_順序表_順序表的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 順序表
- mySql刪除多個表 刪除多個欄位的SQLMySql
- c語言順序棧常規插入刪除操作C語言
- CSS 元素層疊順序CSS
- Laravel admin 多圖七牛擴充套件,非同步、可拖拽順序、可刪除Laravel套件非同步
- 同一個元素中有多個class,優先順序
- win10怎麼刪除右鍵多餘選項 win10刪除右鍵多餘選項的方法Win10
- Python如何刪除字串中多餘空白字元?Python字串字元
- MacBook Pro如何刪除多餘的專注模式Mac模式
- 如何刪除MacBook Pro多餘專注模式呢?Mac模式
- 建立元素和刪除元素
- 第二章-線性表-順序表(初始化、迴圈、插入、刪除、查詢、清空)
- win10刪除多餘啟動項怎麼操作 win10如何刪除多餘的開機啟動項Win10
- jQuery刪除元素jQuery
- jQuery 刪除元素jQuery
- 刪除內聯元素之間的空隙
- jQuery調整li元素順序jQuery
- MacBook Pro刪除多餘專注模式詳細教程Mac模式
- [MYSQL][1]建立,修改,刪除表MySql
- 實驗二:順序表的基本操作實現及其應用
- win10如何刪去多餘的本地連線_win10刪除多餘本地連線的方法Win10
- 如何刪除win10多餘的開機啟動項_win10刪除多餘的系統啟動項步驟Win10
- 第2章 順序表及其順序儲存