c语言的线性表插入删除

#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