程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 線性表練習題5

線性表練習題5

編輯:C++入門知識

題目描述:

從有序順序表中刪除所有其值重復的元素,使表中的所有元素的值均不同。


算法分析:

注意該題目給出的是有序的順序表,所以值相同的元素一定在連續的位置上。

我們通過對順序表進行掃描,我們用k來表示不重復的元素的個數,並令初值為第一個元素;

然後用之後的元素依次比較,如果和k對應的元素相同,則對下一個進行比較,

如果和k對應的元素不同,則令k+1,然後賦給k對應的元素。


核心函數:

void Del_repeat(Node *L)
{
	int k = 0;
	int i = 1;
	while(ilength)
	{
		if(L->data[k]!=L->data[i])
			L->data[++k] = L->data[i];
		i++;
	}
	L->length = k+1; 
}

完整代碼:

#include
using namespace std;
struct Node
{
	int *data;
	int length;	
};
void Show(Node *L)
{
	for(int i=0;ilength;i++)
	cout<data[i]<<" ";
	cout<length)
	{
		if(L->data[k]!=L->data[i])
			L->data[++k] = L->data[i];
		i++;
	}
	L->length = k+1; 
	Show(L);
}
int main()
{
	Node nde;
	int a[10]	=	{1,2,2,3,3,3,6,7,9,9};
	nde.data 	=	 a;
	nde.length 	= 	10;
	Del_repeat(&nde); 
	return 0;
} 
程序運行結果:

1 2 3 6 7 9


程序運行過程圖解:



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved