代码示例
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define ListSize 10
typedef struct SqList {
int* data;
int length;
};
// ---------------------------- 初始化-----------------------------
bool InitList(struct SqList* L)
{
L->data = (int*)malloc(sizeof(int) * ListSize);
int i = 0;
for (i = 0; i < ListSize; i++)
{
L->data[i] = i;
}
//-----------------这里制造三个相等的元素------------
L->data[4] = 4;
L->data[5] = 4;
L->data[6] = 4;
L->length = ListSize;
return true;
}
bool Delete_same(struct SqList* L)
{
if (L->length == 0) {
return false;
}
int i;
int j;
for (i = 0, j = 1; j < L->length; j++)
{
if (L->data[i] != L->data[j])//查找下一个与上个元素值不同的元素
{
L->data[++i] = L->data[j];//找到后,将元素前移,注意!这里必须是++i,而不能是i++,否则会丢失数据
}
}
L->length = i + 1;
return true;
}
void print(struct SqList* L)
{
int j = L->length;
int i = 0;
for (i = 0; i < j; i++)
{
printf("%d ", L->data[i]);
}
printf("\n");
}
int main()
{
//-------------------初始化顺序表--------------------
struct SqList L;
if (InitList(&L) == true) {
printf("顺序表初始化成功!\n");
}
print(&L);
printf("\n\n");
printf("删除相同元素后\n\n");
Delete_same(&L);
print(&L);
printf("\n\n");
}
152

被折叠的 条评论
为什么被折叠?



