/*
#include <stdio.h>
#include <stdlib.h>
#define N 100
typedef struct
{
int data[N];
int pos;
} sqllist;
// 创建顺序表
sqllist* creat_list()
{
sqllist *list = (sqllist*)malloc(sizeof(sqllist));
if (list != NULL)
{
list->pos = 0;
}
return list;
}
// 插入数据
void insert_list(sqllist *ptr, int num)
{
if (ptr->pos == N)
{
printf("空间已满\n");
}
else
{
ptr->data[ptr->pos] = num;
ptr->pos++;
}
}
// 打印数据
void show_list( sqllist *ptr)
{
for (int i = 0; i < ptr->pos; i++)
{
printf("%d\n", ptr->data[i]);
}
}
// 删除最后一个数据
void delete_list(sqllist *ptr)
{
if (ptr->pos == 0)
{
printf("空表不能删除\n");
}
else
{
ptr->pos--;
}
}
// 指定位置插入数据
sqllist* s_insert_list(sqllist* sq,int k,int num)
{
if(sq->pos==N)
{
printf("数据表满了无法插入");
}
if(k<0 || k>sq->pos)
{
printf("输入下标位置不合法");
}
for(int i=sq->pos; i>=k;i--)
{
sq->data[i]=sq->data[i-1];
}
sq->data[k]=num;
sq->pos++;
return sq;
}
//指定位置删除数据
void s_delete_list(sqllist* sq,int k)
{
if(sq->pos==0)
{
printf("空表无法删除");
}
if(k<0 || k>=sq->pos)
{
printf("输入内容不合法");
}
for(int i=k;i<sq->pos-1;i++)
{
sq->data[i]=sq->data[i+1];
}
sq->pos--;
}
int main(int argc, const char *argv[])
C{
sqllist *sq = creat_list();
if (sq == NULL)
{
return 1;
}
insert_list(sq, 10);
insert_list(sq, 20);
insert_list(sq, 30);
show_list(sq);
printf("///\n");
delete_list(sq);
show_list(sq);
sqllist* sitr=s_insert_list(sq,1,50);
show_list(sitr);
return 0;
}
*/
//2.顺序表去重
#include <stdio.h>
#include <stdlib.h>
#define N 100
typedef struct
{
int arr[N];
int pos;
} sqllist;
// 创建数据表
sqllist* create_list()
{
sqllist* list = (sqllist *)malloc(sizeof(sqllist));
if (list == NULL)
{
printf("数据表空间申请失败\n");
exit(1);
}
list->pos = 0;
return list;
}
// 指定位置删除数据
void s_delete_list(sqllist* sq, int k)
{
if (sq->pos == 0)
{
printf("空表无法删除\n");
return;
}
if (k < 0 || k >= sq->pos)
{
printf("输入内容不合法\n");
return;
}
for (int i = k; i < sq->pos - 1; i++)
{
sq->arr[i] = sq->arr[i + 1];
}
sq->pos--;
}
// 删除重复元素
void remove_duplicates(sqllist* sq)
{
for (int i = 0; i < sq->pos; i++)
{
for (int j = 0; j < i; j++)
{
if (sq->arr[i] == sq->arr[j])
{
s_delete_list(sq, i);
i--;
break;
}
}
}
}
// 打印列表
void print_list(sqllist* sq)
{
for (int i = 0; i < sq->pos; i++)
{
printf("%d ", sq->arr[i]);
}
printf("\n");
}
int main()
{
sqllist *sq = create_list();
int arr1[N] = {1, 2, 2, 1, 1, 3, 4, 3, 2, 4, 5, 3, 4, 5, 4, 1};
int length = sizeof(arr1) / sizeof(arr1[0]);
for (int i = 0; i < length; i++)
{
if (sq->pos < N)
{
sq->arr[sq->pos++] = arr1[i];
}
}
printf("原始列表:\n");
print_list(sq);
remove_duplicates(sq);
printf("去重后的列表:\n");
print_list(sq);
return 0;
}
2024年7月31日 数据结构作业
最新推荐文章于 2024-08-08 16:32:53 发布