-
题目描述
-
解题思路心得
就是遍历然后找到item就删除。啊啊写完发文章才发现是顺序表火速借鉴了一下
用一个标记来保存不等于指定值的元素,遍历数组,(好难解释)存一个算一个,遇到该删除的item就不记录k直到遇到不等于指定值的就记录并k++。
-
代码
#include <iostream>
using namespace std;
void creatlist(int* arr, int len)
{
for (int i = 0; i < len; i++)
{
cin >> arr[i];
}
}
int deletenode(int*&arr, int index,int len)
{
int k=0;
for (int i = 0; i < len; i++)
{
if (arr[i]!=index)
{
arr[k]=arr[i];
k++;
}
}
return k;
}
void printlist(int*arr,int length)
{
for (int i = 0; i < length-1; i++)
{
cout<<arr[i]<<" ";
}
cout<<arr[length-1]<<endl;
}
int main()
{
int n=0;
int index ,length;
while (1)
{
cin >> n;
if (!n)
{
break;
}
int *arr=new int[n];
creatlist(arr, n);
cin >> index;
length=deletenode(arr,index,n);
printlist(arr,length);
}
}