永发信息网

C语言中顺序列表的插入删除程序

答案:2  悬赏:0  手机版
解决时间 2021-02-05 02:25
  • 提问者网友:饥饿走向夜
  • 2021-02-04 06:09
C语言中顺序列表的插入删除程序
最佳答案
  • 五星知识达人网友:迟山
  • 2021-02-04 06:20
#include
#include
#include
#define MaxSize 50
#define len(x) sizeof(x)/sizeof(x[0])
typedef struct SqList
{
int data[MaxSize];
int length;
}SqList;
static SqList Create(int a[],int n);//用一个数组创建静态顺序表
static void Print(SqList L);//打印一个静态顺序表
static void ListInsert(SqList *p,int i,int e);//L的第i个位置插入e
static void ListDelete(SqList *p,int i);//删除列表第i个数据
static int LocateElem(SqList L,int e);//查找第一个值等于e的元素,返回其位序
static void Reverse(SqList *p,int left,int right);//逆置表的第left到right的元素顺序

static int Binsearch(SqList L,int e);
int main()
{
int a[]={1,2,3,4};
SqList L=Create(a,len(a));
ListInsert(&L,2,100);
ListDelete(&L,2);
Reverse(&L,1,4);
Print(L);
printf("%d\n",Binsearch(L,2));
}
static SqList Create(int a[],int n)
{
SqList L;
int i;
L.length=n;
for(i=0;iL.data[i]=a[i];
return L;
}
static void Print(SqList L)
{
int i;
for(i=0;iprintf("%d ",L.data[i]);
printf("\n");
}
static void ListInsert(SqList *p,int i,int e)
{
int j;
if(i<1 || i>p->length+1)
{printf("错误范围\n");}
if(p->length>=MaxSize)
{printf("存储空间已满\n");}
for(j=p->length;j>=i;j--)
p->data[j]=p->data[j-1];
p->data[i-1]=e;
p->length++;
}
static void ListDelete(SqList *p,int i)
{
if(i<1 || i>p->length)
{printf("删除范围出错\n");return;}
while(ilength)
{
p->data[i-1]=p->data[i];i++;
}
p->length--;
}
static int LocateElem(SqList L,int e)
{
int i;
for(i=0;iif(L.data[i]==e)
return i+1;
return 0;
}
static void Reverse(SqList *p,int left,int right)
{
int temp;
if(left>right || left<1 || right>p->length)
{printf("错误的输入\n");return;}
for(left--,right--;left{
temp=p->data[left];
p->data[left]=p->data[right];
p->data[right]=temp;
}
}
static int Binsearch(SqList L,int e)
{
int mid,low=0,high=L.length-1;
while((low+1)!=high)
{
mid=(low+high)/2;
if(L.data[mid]==e) return mid+1;
if(eif(e>L.data[mid]) low=mid;
}
return 0;
}

ListInsert 和 ListDelete 为你所要的函数
全部回答
  • 1楼网友:风格不统一
  • 2021-02-04 07:29
覆盖阿,比如利用数组
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯