C++博客 :: 首页 :: 新随笔 ::  ::  :: 管理
//线性表的顺序表示法,实现插入,查找,删除操作,采用数组存储。
#include<stdio.h>
#include
<stdlib.h>

int n;  //the number of elements 

void print(int a[])//输出
{
    
for(int i=0;i<n;i++)
        printf(
"%d ",a[i]);
    printf(
"\n");
}
int insert(int element,int pos,int a[])//插入
{   if(pos<0||pos>n)return 0;
    
else
    {
for(int i=n-1;i>=pos;i--)
      a[i
+1]=a[i];
     a[pos]
=element;
     n
++;
    }
}

int del(int pos,int a[])//删除
{
    
if(pos<0||pos>n)return 0;
    
else
    {
        
for(int i=pos;i<n-1;i++)
            a[i]
=a[i+1];
        n
--;
    }
    
return 1;
}

int search(int element,int a[])//查找,如果查到返回该元素的下标号,否则返回-1
{
    
for(int i=0;i<n;i++)
        
if(a[i]==element)return i;
    printf(
"没有此元素\n");
    
return -1;

}
//m待插入或者待删除的元素的值
//pos待插入元素的位置

int main()
{   
int m;int pos;
    printf(
"请输入元素个数:");
    scanf(
"%d",&n);
    
int *a=(int *)malloc((n+1)*sizeof(int));
    
if(!a){printf("分配存储失败");return 0;}
    printf(
"请依顺序输入整数序列:\n");
    
for(int i=0;i<n;i++)
        scanf(
"%d",&a[i]);
    printf(
"请输入待插入元素值和下标:");
    scanf(
"%d%d",&m,&pos);
    insert(m,pos,a);
    print(a);
    printf(
"输入一个待查元素:");
    scanf(
"%d",&m);
    printf(
"%d\n",search(m,a));

    printf(
"请输入待删除元素的下标:");
    scanf(
"%d",&pos);
    del(pos,a);
    print(a);

    free(a);
    
return 0;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理