线性表中实现查找、删除、插入元素
2014-10-18 10:26
302 查看
#include <stdio.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int last;
} SqList;
void InitList(SqList &sq)
{
sq.last=-1;
}
void InputList(SqList &sq)
{
int i=0,n=0;
printf("输入线性表的长度:");
scanf("%d",&n);
printf("输入线性表元素:");
while(i<n)
{scanf("%d",&sq.elem[i]);
i++;
}
sq.last=n-1;
printf("\n");
}
void DispList(SqList sq)
{
int i;
printf("输出线性表元素:");
for (i=0;i<=sq.last;i++)
printf("%d ",sq.elem[i]);
printf("\n");
}
int Locate(SqList sq,ElemType x)
{
int i=0;
while ((i<=sq.last)&&(sq.elem[i]!=x))
i++;
if (i>sq.last)
return(-1);
else
return(i+1);
}
int InsList(SqList *L,int i,ElemType e)
{
int k;
if((i<1)||(i>L->last+2))
{
printf("插入i值不合法");
return 0;
}
if(L->last>=MAXSIZE-1)
{
printf("表已满,无法插入");
return 0;
}
for (k=L->last;k>=i-1;k--)
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e;
L->last++;
return 1;
}
int DelList(SqList *L,int i,ElemType *e)
{
int k;
if((i<1)||(i>L->last+1))
{
printf("删除位置不合法");
return 0;
}
*e=L->elem[i-1];
for(k=i;i<=L->last;k++)
L->elem[k-1]=L->elem[k];
L->last--;
return 1;
}
void main()
{
SqList sq;
ElemType x;
int m,j,k,number,flag;
InitList(sq);
InputList(sq);
DispList(sq);
printf("输入待查找的元素:");
scanf("%d",&x);
m=Locate(sq, x);
if (m==-1)
printf("线性表中没有元素%d!\n",x);
else
printf("%d是线性表的第%d个元素!\n",x,m);
printf("输入待插入的元素的位置:\n");
scanf("%d",&j);
printf("输入待插入元素:\n");
scanf("%d",&number);
flag=InsList(&sq,j,number);
if(flag==0)
printf("插入失败!\n");
else
{ printf("插入成功!\n");
DispList(sq);
}
printf("输入你想删除的元素位置:\n");
scanf("%d",&k);
flag=DelList(&sq,k,&x);
if(flag==0)
printf("删除不成功!\n");
else
{ printf("删除成功!删除后的线性表:\n");
DispList(sq);
printf("输出删除的元素值:%d\n",x);
}
}
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int last;
} SqList;
void InitList(SqList &sq)
{
sq.last=-1;
}
void InputList(SqList &sq)
{
int i=0,n=0;
printf("输入线性表的长度:");
scanf("%d",&n);
printf("输入线性表元素:");
while(i<n)
{scanf("%d",&sq.elem[i]);
i++;
}
sq.last=n-1;
printf("\n");
}
void DispList(SqList sq)
{
int i;
printf("输出线性表元素:");
for (i=0;i<=sq.last;i++)
printf("%d ",sq.elem[i]);
printf("\n");
}
int Locate(SqList sq,ElemType x)
{
int i=0;
while ((i<=sq.last)&&(sq.elem[i]!=x))
i++;
if (i>sq.last)
return(-1);
else
return(i+1);
}
int InsList(SqList *L,int i,ElemType e)
{
int k;
if((i<1)||(i>L->last+2))
{
printf("插入i值不合法");
return 0;
}
if(L->last>=MAXSIZE-1)
{
printf("表已满,无法插入");
return 0;
}
for (k=L->last;k>=i-1;k--)
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e;
L->last++;
return 1;
}
int DelList(SqList *L,int i,ElemType *e)
{
int k;
if((i<1)||(i>L->last+1))
{
printf("删除位置不合法");
return 0;
}
*e=L->elem[i-1];
for(k=i;i<=L->last;k++)
L->elem[k-1]=L->elem[k];
L->last--;
return 1;
}
void main()
{
SqList sq;
ElemType x;
int m,j,k,number,flag;
InitList(sq);
InputList(sq);
DispList(sq);
printf("输入待查找的元素:");
scanf("%d",&x);
m=Locate(sq, x);
if (m==-1)
printf("线性表中没有元素%d!\n",x);
else
printf("%d是线性表的第%d个元素!\n",x,m);
printf("输入待插入的元素的位置:\n");
scanf("%d",&j);
printf("输入待插入元素:\n");
scanf("%d",&number);
flag=InsList(&sq,j,number);
if(flag==0)
printf("插入失败!\n");
else
{ printf("插入成功!\n");
DispList(sq);
}
printf("输入你想删除的元素位置:\n");
scanf("%d",&k);
flag=DelList(&sq,k,&x);
if(flag==0)
printf("删除不成功!\n");
else
{ printf("删除成功!删除后的线性表:\n");
DispList(sq);
printf("输出删除的元素值:%d\n",x);
}
}
相关文章推荐
- (1)顺序表的操作 ① 输入一组整型元素序列,建立线性表的顺序存储结构。 ② 实现该线性表的遍历。 ③ 在该顺序表中查找某一元素,查找成功显示查找元素,否则显示查找失败。 ④ 在该顺序表中删除或插入指
- 编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作
- c语言实现线性表的建立,初始化,插入,删除,查找,遍历以及时间复杂度分析
- 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数将其返回。 ⑤ 建立两个
- 实现列表类,清空、添加、删除、查找、插入,判断元素是否存在
- (2)单链表的操作 ① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数
- objecttive-C语言使用二叉排序树实现查找、插入、删除、查看元素
- 【数据结构作业一】写出顺序表的结构体类型定义及查找、插入、删除算法,并以顺序表作存储结构,实现线性表的插入、删除
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- C语言实现二叉搜索树的创建、插入、删除和查找
- 利用模板类编写一个程序,实现双向链表的插入、删除、查找、显示的功能。
- 试用多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作:插入,删除,测长等。
- 用JAVA语言,编写一个链表类(双向链表),实现插入,删除,查找操作
- 线性表建立、插入、删除、查找应用
- 数据结构:线性表(顺序存储)顺序表类(实现顺序表的创建,输出,插入,删除功能)
- c语言实现顺序表的插入,删除和求给定元素在表中的位序等运算
- arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新 (转)
- c语言心得-----数组中对元素的操作排序,查找,插入,和删除
- 原生js实现查找/添加/删除/指定元素的class
- 单链表的查找、插入和删除运算的实现过程