#include <stdio.h>
#define NUM 30
void mybubble(int *pArr, int num)
{//使用冒泡排序法对数组pArr进行从小到大排序,num为数组元素的个数
int i, j, t;
for (i = 0; i < num - 1; i++)
{
for (j = 0; j < num - i - 1; j++)
{
if (pArr[j] > pArr[j + 1])
{
t = pArr[j + 1];
pArr[j + 1] = pArr[j];
pArr[j] = t;
}
}
}
}
int myfind(int *pArr, int key, int num)
{ //数组pArr已按从小到大排好序,key为要查找的关键字值,num为数组元素的个数
//查找成功,返回该关键字值所在位置的下标,若查找失败则返回-1
//填入实验s04128的相关代码
int left = 0 ;
int right = len - 1 ;
int mid;
while (left <= right){
mid = (left + right) / 2 ;
if (a[mid] == target)
return mid;
if (target < a[mid])
right = mid - 1 ;
else
left = mid + 1 ;
}
return - 1 ;
}
int myinsert(int *pArr, int key, int *num)
{ //数组pArr已按从小到大排好序,num为数组元素的个数,key为要插入的关键字值,插入后数组保持有序
//插入成功后,返回插入位置的下标,若插入失败则返回-1
//如果已经存在该关键字值元素,则插入失败
//补充实现代码
int k,length,date;
if(pArr->length==MAXSIZE) /*顺序表已满*/
return ERROR;
if(key<1 || key>pArr->length+1) /*如果i不在范围时*/
return ERROR;
if(key<=pArr->length) /*若插入数据不在表尾*/
{
for (k=pArr->length-1;k>=key-1;k--) /*将要插入位置后数据元素向后移动一位*/
pArr->data[k+1]=pArr->data[k];
}
pArr->data[key-1]=num; /*将新元素插入*/
pArr->length++; /*表长加1*/
return k;
}
int mydelete(int *pArr, int key, int *num)
{ //数组pArr已按从小到大排好序,num为数组元素的个数,key为要删除的值,删除后数组保持有序
//删除成功后,返回该元素的下标,若删除失败则返回-1
//如果不存在该关键字值元素,则删除失败
//补充实现代码
int k,length,date;
if(pArr->length==0) /*线性表为空*/
return ERROR;
if(key<1 || key >PArr->length) /*删除位置不正确*/
return ERROR;
*num = pArr->data[key-1];
if(i<pArr->length) /*如果删除不是最后位置*/
{
for(k=key;k<pArr->length;k++) /*将删除位置后继元素前移*/
pArr->data[k-1]=pArr->data[k];
}
pArr->length--; /*表长减1*/
return k;
}
void printarray(int *pArr, int num)
{
int i;
for (i = 0; i < num; i++)
printf("\t%d", *pArr++);
printf("\n");
}
int main()
{
int MA[NUM] = { 34, 76, 23, 67, 345, 234, 21, 78, 172, 90 };
int nums = 10;//数组元素个数
int mkey, nkey, k;
mybubble(MA, nums);
scanf("%d%d", &mkey, &nkey);//输入2个整数
k = myinsert(MA, mkey, &nums);
if (k < 0)
printf("insert ERROR\n");
else
printf("insert SUCCESS\t%d\n", k);
k = mydelete(MA, nkey, &nums);
if (k < 0)
printf("delete ERROR\n");
else
printf
("delete SUCCESS\t%d\n", k);
printarray(MA, nums);
return 0;
}
代码都已经有了,关于线性表插入删除有那方面的问题呢?
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632