删除顺序表中的第i个元素,,给个完整的 C语言代码吧~~~ 谢谢 20
#include <stdio.h>
#define MAXSIZE 100
typedef struct{
int elem[MAXSIZE];
int last;
} SeqList;
void deletelist(SeqList *l,int i,int k);
int main(){
int i,k,j=0;
SeqList *l;
SeqList a;
l=&a;
scanf("%d%d",&i,&k);//输入i和k
while(scanf("%d",&l->elem[j])!=EOF)
j++;//输入顺序表内容
l->last=j-1;
deletelist(l,i,k);
return 0;
}
扩展资料
顺序表插入元素
向已有顺序表中插入数据元素,根据插入位置的不同,可分为以下 3 种情况:
1、插入到顺序表的表头;
2、在表的中间位置插入元素;
3、尾随顺序表中已有元素,作为顺序表中的最后一个元素;将要插入位置元素以及后续的元素整体向后移动一个位置;将元素放到腾出来的位置上。
注意,动态数组额外申请更多物理空间使用的是 realloc 函数。并且,在实现后续元素整体后移的过程,目标位置其实是有数据的,还是 3,只是下一步新插入元素时会把旧元素直接覆盖。
删除顺序表中的第i个元素代码如下:
Bool DeleteList(sqlist&l,int pos, int&e)
{
如果(pos<1|| pos>L.length)返回false;
E=L。base[pos-1];
For (int I = pos. I < L)l蒜皮的;我+ +)
{
l[I-1=L]base[我];
}
ll蒜皮-;
返回true;
}
扩展资料:
C语言对数组元素大小排序:
下面使用冒泡排序将实线数组从小到大排序。
思想:每次比较两个相邻的数字,如果按升序排列,大的数字会放在后面,经过一个循环,最大的数字会放在最后。
10、2、3、4、5、6、987,1是排序序列的输入,第一批订单后,将是最大的,10最后,第二个订单,剩下的2,3,4,5,6,9、8、7、1到泡沫,将是最大的电流9在倒数第二的位置,等等。
bool DeleteList(SqList& L,int pos,int& e)
{
if(pos<1||pos>L.length) return false;
e=L.base[pos-1];
for(int i=pos;i<L.length;i++)
{
L.base[i-1]=L.base[i];
}
L.length--;
return true;
}
有用简单数组写的,输入哪个数就删除哪个的那种代码么?? 用C++执行的
只要做简单的替换即可,线性表替换成数组,如下:
template
bool Delete(ElemType* L,int length,int pos,ElemType& e)
{
if(poslength) return false;//参数合法性检查
e=L[pos-1];//保留删除元素
for(int i=pos;i<length;i++)//这步最关键,删除元素后,要前移后续元素
{
L[i-1]=L[i];//前移
}
return true;
}
#define MAXLENGTH 100
int del(char arr[],int i)
{
int j=0;
while(arr[j]!='\0') j++;
int max=j;
if(i>=j) return -1;//判断超出表的最大长度没
for(j=i;j<max;j++)
arr[j]=arr[j+1];
return 0;
}
int main(int argc, char* argv[])
{
char ar[]="0123456789";//假如这是个表
del(ar,3);//删除顺序表ar中的第四个元素
printf("%s\n",ar);
return 0;
}
这个都固定删哪个了,,有用简单数组写的,输入哪个数就删除哪个的那种代码么??
我写的是思路