1.顺序表上的元素的插入
核心:
#include"stdio.h"
#define typeone int //关键字类型
#define maxsize 100
typedef struct
{
typeone data[maxsize];
int last;
}link;
void shuchu(link *head)//输出函数
{
int i;
link *q=head;
printf("序列为:\n");
for(i=1;i<=q->last;i++)
printf("%d\t",q->data[i]);
}
int insert(link *head,typeone x,int i)//插入函数,核心函数
{
int k;
if(i<1||i>head->last+1||head->last>=maxsize-1)//确定非法位置
return 0;
else
{
if(i>head->last)
{
head->data[i]=x;
head->last=i;
}
else
{
for(k=head->last;k>=i;k--)
head->data[k+1]=head->data[k];
head->data[i]=x;//将函数装进去
head->last=head->last+1;
}
return 1;
}
}
int shuru(link *head,int n)//输入函数
{
int i,x;
head->last=0;//初始化
if(n>=1)
{
for(i=1;i<=n;i++)
{
printf("输入的第%d个数为:\t",i);
scanf("%d",&x);
head->data[i]=x;
}
head->last=n;
return 1;
}
else
return 0;
}
main()
{
link head;
int n,x,i;
printf("请输入你想构建的表的长度:\t");
scanf("%d",&n);
if(shuru(&head,n)==1)
{
shuchu(&head);
printf("\n");
}
printf("请输入你要插入的数:\t");
scanf("%d",&x);
printf("请输入你要插入的数:\t");
scanf("%d",&i);
if(insert(&head,x,i)==1);//插入函数
shuchu(&head);
printf("\n");
}
运行后:
顺序表上的元素的删除
将删除函数与插入函数替换后。除主函数稍有改动之外,其他同上
int delete(link *head,int i)//删除函数,删除第i个元素
{
int k;
if(i<1||i>head->last||head->last==0)//非法位置
return 0;
else
{
for(k=i;k<head->last;k++)
head->data[k]=head->data[k+1];
head->last--;
return 1;
}
}
运行后:
顺序表上的元素的定位
这是核心函数
void locate(link *head,int x)
{
int k;
for(k=1;k<=head->last&&head->data[k]!=x;k++);//自加自减的时候可以在for后面加分号“;”;
if(k<=head->last)
{
printf("%d在数组中的第%d位:\n",x,k);
}
else
{
printf("%d不在数组中\n",x);
}
}
这是全的定位函数
#include"stdio.h"
#define typeone int //关键字类型
#define maxsize 100
typedef struct
{
typeone data[maxsize];
int last;
}link;
void shuchu(link *head)//输出函数
{
int i;
link *q=head;
printf("序列为:\n");
for(i=1;i<=q->last;i++)
printf("%d\t",q->data[i]);
}
void locate(link *head,int x)
{
int k;
for(k=1;k<=head->last&&head->data[k]!=x;k++);//自加自减的时候可以在for后面加分号“;”;
if(k<=head->last)
{
printf("%d在数组中的第%d位:\n",x,k);
}
else
{
printf("%d不在数组中\n",x);
}
}
int shuru(link *head,int n)//输入函数
{
int i,x;
head->last=0;//初始化
if(n>=1)
{
for(i=1;i<=n;i++)
{
printf("输入的第%d个数为:\t",i);
scanf("%d",&x);
head->data[i]=x;
}
head->last=n;
return 1;
}
else
return 0;
}
main()
{
link head;
int n,x;
printf("请输入你想构建的表的长度:\t");
scanf("%d",&n);
if(shuru(&head,n)==1)
{
shuchu(&head);
printf("\n");
}
printf("请输入你要查找的数:\t");
scanf("%d",&x);
locate(&head,x);//调用函数
}
运行之后: