删除线性表中关键字值大于M12的所有元素。(用顺序表和链表实现)。如何用C语言写该问题一个功能函数?

一定要用C写,只写出该问题的一个功能函数即可,这个是数据结构的一个题目。

第1个回答  2012-06-22
int Delete(int *s, int *length, int M12) //线性表删除大于M12的数据。其中length是数据数。
{
int i, j;
for(i = 0; i < *length; i++)
{
if(s[i] > M12)
{
for(j = i; j + 1 < *length; j++)
{
s[j] = s[j + 1];
(*length)--;
}
}

}
return 0;
}

typedef struct Lnode
{
int data;
struct Lnode *next;
} Lnode;

int Delete(Lnode *s, int *length, int M12) //带头结点的链表删除大于M12的数据。其中length是表长。
{
Lnode *p, *q;
for(p = s, q = p->next; q; )
{
if(q->data > M12)
{
p->next = q->next;
free(q);
(*length)--;
}
else
{
p = p->next;
}
q = p->next;
}
}追问

你这个有问题啊

追答

哪个有问题??什么问题,你说我看看。

追问

*length这个应该不要*吧。

追答

这个其实是有必要的。在线性表里面,顺序表的长度是循环条件控制所需要的。不然怎么知道什么时候循环结束。另外,链表中一般将头结点、尾结点和表长放在一个结构体中,方便操作。这里的链表虽然用不到length,你可以删去。但一般链表插入删除会有相应的长度的操作的。

相似回答