数据结构——线性表基本操作
来源:互联网 发布:前端wap 淘宝页面模板 编辑:程序博客网 时间:2024/05/17 00:57
#include<stdio.h>
#include<stdlib.h>
#define MAX 20
#define LISTINCREMENT 10
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
void CreatList(SqList &L)
{//建立一个线性表
L.elem=(int*)malloc(MAX *sizeof(int));
if(!L.elem)
return;//exit(0)
L.listsize=MAX;
printf("输入表的长度:");
scanf("%d",&L.length);
printf("输入%d个数:",L.length);
for(int i=0;i<L.length;i++)
scanf("%d",&L.elem[i]);
}
void Traverse(SqList L)
{
//遍历
printf("表中数据为:");
for(int i=0;i<L.length;i++)
printf("%3d",L.elem[i]);
printf("\n");
}
void LocateElem(SqList L,int e)
{ //查找
int i;
printf("输入查找的元素:");
scanf("%d",&e);
for(i=0;i<L.length;i++)
{
if(L.elem[i]==e)
{
printf("查找成功,查找元素为%d",L.elem[i]);
printf("\n");
return;
}
}
printf("查找失败");
printf("\n");
}
int makesureElem(SqList L,int e)
{
int i;//确定要删除的元素
for(i=0;i<L.length;i++)
{
if(L.elem[i]==e)
{
printf("要删除的元素 位置为 %d",i+1);
printf("\n");
return (i+1);
}
}
printf("元素不存在");
printf("\n");
return 0;
}
void ListInsert(SqList &L)
{//插入元素及其要插入的位置
int i;
int e;
printf("输入要插入位置及元素\n");
scanf("%d%d",&i,&e);
printf("在顺序线性表中第%d个位置之前插入新的元素%d。\n",i,e);
//在顺序线性表L中第i个位置之前插入新的元素e,
if(i<1||i>L.length+1)
return; //i的合法位置为1<=i<=ListLength(L)+1
int *p,*q;
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
/*表示从链表的第i个元素开始一直到最后一个元素往后移一位p=&L.elem[L.length-1]
意思是p赋初值为链表的最后一个元素地址,p>=q表示循环知道p<q的时候结束,--p是使p指针的指向往前移一位*/
++L.length;
return;
}
int ListDelete(SqList &L)
{ //删除元素
int i;
int e;
printf("输入要删除的元素");
scanf("%d",&e);
i=makesureElem(L,e);
if((i<1)||(i>L.length))
return 0;//i的合法值为1<=i<=ListLength(L)+1
else
{
int *p,*q;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)
*(p-1)=*p;//被删除元素之后的元素左移
--L.length;
printf("元素被删除");
}return 0;
}
int main()
{
SqList L;
CreatList(L);
Traverse(L);
LocateElem(L,1);
ListInsert(L);//ListInsert(L,3,8);
Traverse(L);
ListDelete(L);
Traverse(L);
return 0;
}
#include<stdlib.h>
#define MAX 20
#define LISTINCREMENT 10
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
void CreatList(SqList &L)
{//建立一个线性表
L.elem=(int*)malloc(MAX *sizeof(int));
if(!L.elem)
return;//exit(0)
L.listsize=MAX;
printf("输入表的长度:");
scanf("%d",&L.length);
printf("输入%d个数:",L.length);
for(int i=0;i<L.length;i++)
scanf("%d",&L.elem[i]);
}
void Traverse(SqList L)
{
//遍历
printf("表中数据为:");
for(int i=0;i<L.length;i++)
printf("%3d",L.elem[i]);
printf("\n");
}
void LocateElem(SqList L,int e)
{ //查找
int i;
printf("输入查找的元素:");
scanf("%d",&e);
for(i=0;i<L.length;i++)
{
if(L.elem[i]==e)
{
printf("查找成功,查找元素为%d",L.elem[i]);
printf("\n");
return;
}
}
printf("查找失败");
printf("\n");
}
int makesureElem(SqList L,int e)
{
int i;//确定要删除的元素
for(i=0;i<L.length;i++)
{
if(L.elem[i]==e)
{
printf("要删除的元素 位置为 %d",i+1);
printf("\n");
return (i+1);
}
}
printf("元素不存在");
printf("\n");
return 0;
}
void ListInsert(SqList &L)
{//插入元素及其要插入的位置
int i;
int e;
printf("输入要插入位置及元素\n");
scanf("%d%d",&i,&e);
printf("在顺序线性表中第%d个位置之前插入新的元素%d。\n",i,e);
//在顺序线性表L中第i个位置之前插入新的元素e,
if(i<1||i>L.length+1)
return; //i的合法位置为1<=i<=ListLength(L)+1
int *p,*q;
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
/*表示从链表的第i个元素开始一直到最后一个元素往后移一位p=&L.elem[L.length-1]
意思是p赋初值为链表的最后一个元素地址,p>=q表示循环知道p<q的时候结束,--p是使p指针的指向往前移一位*/
++L.length;
return;
}
int ListDelete(SqList &L)
{ //删除元素
int i;
int e;
printf("输入要删除的元素");
scanf("%d",&e);
i=makesureElem(L,e);
if((i<1)||(i>L.length))
return 0;//i的合法值为1<=i<=ListLength(L)+1
else
{
int *p,*q;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)
*(p-1)=*p;//被删除元素之后的元素左移
--L.length;
printf("元素被删除");
}return 0;
}
int main()
{
SqList L;
CreatList(L);
Traverse(L);
LocateElem(L,1);
ListInsert(L);//ListInsert(L,3,8);
Traverse(L);
ListDelete(L);
Traverse(L);
return 0;
}
0 0
- 数据结构——线性表基本操作
- 【数据结构】线性表基本操作
- 线性表的基本操作-数据结构
- 数据结构-顺序线性表基本操作实现
- 数据结构-链式线性表基本操作实现
- 《数据结构》严蔚敏版(java解)——第二章 线性表01 基本操作
- 数据结构之线性表中顺序表的基本操作
- 数据结构之线性表(顺序表)的基本操作
- 数据结构中线性表的一些基本操作
- 数据结构 - C语言版 - 线性表 所有基本操作
- 数据结构2:线性表的构建和基本操作
- C++数据结构之线性顺序表基本操作
- C语言数据结构之线性表的基本操作
- 数据结构复习-线性表的定义和基本操作
- 数据结构 线性表的基本操作(C语言)
- 数据结构学习---线性表顺序存储结构的基本操作
- 数据结构--线性表操作
- 数据结构-线性表操作
- tomcat
- LeetCode Week 4
- 算法训练 前缀表达式
- Linux编译静态库和动态库的方法
- 【数据库知识补充】模式与对象的关系
- 数据结构——线性表基本操作
- Source Insight 3.5显示行号
- 二维多项式求值
- DPC的使用方法
- Leetcode Week9
- C# 枚举(Enum)
- 写给自己
- AngularJS教程 AngularJS从0到1——HelloWorld
- C# 类(Class)