习题2.10
已知长度为n的线性表A采用顺序存储结构,请写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。
void DeleteItem(SqList& L, int item)
{
int k = 0;
int i = 0;
while (1)
{
if (L.data[i]!=item)
{
L.data[k] = L.data[i];
k++;
}
i++;
if (L.length == i) break;
}
L.length = k;
}
完整程序:
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef int Status;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
typedef struct {
int *data;
int length;
}SqList;
Status InitList(SqList& L);
void getList(SqList& L);
void PrintList(SqList L);
void DeleteItem(SqList& L, int item);
int main()
{
int item;
SqList L;
InitList(L);
cout << "输入一个顺序表L:";
cout << endl;
getList(L);
PrintList(L);
cout << "输入一个item值";
cout << endl;
cin >> item;
DeleteItem(L, item);
PrintList(L);
system("pause");
return 0;
}
Status InitList(SqList& L)
{
L.data = new int[MAXSIZE];
if (!L.data) exit(OVERFLOW);
L.length = 0;
return OK;
}
void getList(SqList& L)
{
int i= 0;
while (1)
{
cin >>L.data[i];
i++;
L.length++;
if (cin.get() == '\n') break;
}
}
void PrintList(SqList L)
{
int i = L.length;
while (1)
{
if (L.length - 1 < 0) break;
cout << L.data[i-L.length];
cout << " ";
L.length--;
}
}
void DeleteItem(SqList& L, int item)
{
int k = 0;
int i = 0;
while (1)
{
if (L.data[i]!=item)
{
L.data[k] = L.data[i];
k++;
}
i++;
if (L.length == i) break;
}
L.length = k;
}
版权声明:
作者:maple
链接:https://www.maplezeroz.com/?p=251
来源:我的学习笔记
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
海报
习题2.10
已知长度为n的线性表A采用顺序存储结构,请写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。
void DeleteItem……

共有 0 条评论