Posted on 2010-07-27 08:40
Kevin_Zhang 阅读(844)
评论(0) 编辑 收藏 引用 所属分类:
数据结构
//线性表的顺序表示法,实现插入,查找,删除操作,采用数组存储。
#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;
}