在顺序表中,删除所有值为num的元素
/**我的del函数可以删除,比如12345中的2但是不可以删除比如12234中的2**///代码#include<stdio.h>#include<stdlib.h>#...
/**
我的del函数可以删除,比如 1 2 3 4 5 中的 2
但是不可以删除 比如 1 2 2 3 4 中的 2
**/
//代码
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 10 // 存储空间的初始分配量
#define LISTINCREMENT 10 // 分配增量
typedef int ElemType; // 顺序表中存放的是整数
typedef struct
{
ElemType * elem; // 存储空间基址
int length; // 当前长度
int listsize; // 当前分配的存储容量
}SqList;
void InitList(SqList &L)
{
// 建立一个空的顺序表L
L.elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if (L.elem) {
L.length = 0;
L.listsize = LIST_INIT_SIZE;
}
}
void CreateSqList(SqList &L, int m) {
// 初始条件:顺序表L已存在
// 操作结果:将m个元素依次加入顺序表L
int i;
for (i = 0; i < m; i++) {
scanf("%d", &L.elem[i]);
L.length++;
if (L.length >= L.listsize) {
L.elem = (ElemType *)realloc(L.elem, (L.listsize + LISTINCREMENT) * sizeof(ElemType));
L.listsize += LISTINCREMENT;
}
}
}
void PrintList(SqList L)
{
// 初始条件:顺序表L已存在
// 操作结果:打印顺序表
int i;
for (i = 0; i < L.length; i++)
printf("%d ", L.elem[i]);
}
void del(SqList &L, int num) //删除顺序表中所有值为num的元素
{
int k = 0;
for (int i = 0; i <= L.length; i++)
{
if (L.elem[i] != num)
L.elem[k++] = L.elem[i];
else
L.length--;
}
}
int main()
{
SqList L;
int n, i;
ElemType e,num;
InitList(L);
printf("请输入表长:");
scanf("%d", &n);
printf("请输入元素(空格分隔):");
CreateSqList(L, n);
printf("顺序表为:");
PrintList(L);
printf("\n");
printf("输入删除的值:");
scanf("%d", &num);
del(L, num);
printf("顺序表为:");
PrintList(L);
printf("\n");
return 0;
} 展开
我的del函数可以删除,比如 1 2 3 4 5 中的 2
但是不可以删除 比如 1 2 2 3 4 中的 2
**/
//代码
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 10 // 存储空间的初始分配量
#define LISTINCREMENT 10 // 分配增量
typedef int ElemType; // 顺序表中存放的是整数
typedef struct
{
ElemType * elem; // 存储空间基址
int length; // 当前长度
int listsize; // 当前分配的存储容量
}SqList;
void InitList(SqList &L)
{
// 建立一个空的顺序表L
L.elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if (L.elem) {
L.length = 0;
L.listsize = LIST_INIT_SIZE;
}
}
void CreateSqList(SqList &L, int m) {
// 初始条件:顺序表L已存在
// 操作结果:将m个元素依次加入顺序表L
int i;
for (i = 0; i < m; i++) {
scanf("%d", &L.elem[i]);
L.length++;
if (L.length >= L.listsize) {
L.elem = (ElemType *)realloc(L.elem, (L.listsize + LISTINCREMENT) * sizeof(ElemType));
L.listsize += LISTINCREMENT;
}
}
}
void PrintList(SqList L)
{
// 初始条件:顺序表L已存在
// 操作结果:打印顺序表
int i;
for (i = 0; i < L.length; i++)
printf("%d ", L.elem[i]);
}
void del(SqList &L, int num) //删除顺序表中所有值为num的元素
{
int k = 0;
for (int i = 0; i <= L.length; i++)
{
if (L.elem[i] != num)
L.elem[k++] = L.elem[i];
else
L.length--;
}
}
int main()
{
SqList L;
int n, i;
ElemType e,num;
InitList(L);
printf("请输入表长:");
scanf("%d", &n);
printf("请输入元素(空格分隔):");
CreateSqList(L, n);
printf("顺序表为:");
PrintList(L);
printf("\n");
printf("输入删除的值:");
scanf("%d", &num);
del(L, num);
printf("顺序表为:");
PrintList(L);
printf("\n");
return 0;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询