在顺序表中,删除所有值为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;
}
展开
 我来答
松幼祎0Hb
2018-04-12 · TA获得超过361个赞
知道小有建树答主
回答量:416
采纳率:95%
帮助的人:46.2万
展开全部
升序排列,长度为size,数组名为arr int n=1; for(int i=1;i<size;i++) { if(arr[i]>arr[n-1]) { arr[n]=arr[i]; n++; } }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式