顺序表/线性表

考研期间对数据结构基本代码的复习

#include<stdio.h>
#define maxsize 10
#define ERROR 0
#define TRUE 1

typedef bool status;

//构造一个线性表
typedef struct
{
int length;
int data[maxsize];
}SqList;

//初始化顺序表
void initList(SqList &L)
{
L.length=0;
}
//求顺序表的长度
int getLength(SqList L)
{
return L.length;
}


//在线性表中插入元素
int insertElem(SqList &L,int p,int e)
{
int i;
if(p<0 || p>L.length||L.length==maxsize)
return 0;
for(i=L.length-1;i>=p;--i)
L.data[i+1]=L.data[i];
L.data[p]=e;
++(L.length);
return 1;
}
//在线性表中删除元素
bool deletenum(SqList &L,int loc)
{
int i;
//当删除元素的位置不合法时
if(loc<0 || loc>L.length)
return 0;
for(i=loc;i<L.length;i++)
L.data[i-1]=L.data[i];
--(L.length);
return 1;
}
//
void reverselist(SqList &L)
{
int i;
int temp;
for(i=0;i<L.length/2;i++)
{
temp =L.data[i];
L.data[i]=L.data[L.length-1-i];
L.data[L.length-1-i]=temp;
}
}
//输出线性表的元素
void printfs(SqList L)
{
    int i;
for(i=0;i<L.length;i++)
{
printf("%d ",L.data[i]);
}
}
//查找给定元素值的位置
int returnlocate(SqList L,int num){
int i;
for(i=0;i<L.length;i++)
if(L.data[i] == num)
return i+1;//找到的话返回下标
return -1;//没找到返回-1
}


//在线性表中给定位置查找元素
int getElem(SqList L,int i)
{
//查找的元素超过L的长度或者小于l
if(i<0 ||i>L.length)
return 0;
else
return L.data[i-1];
}
void main()
{
SqList L;
int choose;
for(;;){//在外层加上一个死循环 防止switch语句执行一次后跳出
printf("1.初始化顺序表\n");
printf("2求顺序表的长度\n");
printf("3.取出表中的元素\n");
printf("4.在顺序表中插入元素\n");
printf("5.删除顺序表中的元素\n");
printf("6.顺序表的按值查找\n");
printf("7.将顺序表中的元素翻转\n");
printf("8.输出顺序表中的元素\n");
printf("请输入您的操作\n");
scanf("%d",&choose);
switch(choose){
case 1:
initList(L);
break;

case 2:
printf("顺序表的长度是%d\n",getLength(L));
break;

case 3:
int numlocate;
printf("请输入要查找的元素的位置\n");
scanf("%d",&numlocate);
printf("%d",getElem(L,numlocate));
break;

case 4:
int num,number;
int o;
printf("请输入插入元素的数\n");
scanf("%d",&num);
for(o=0;o<num;o++)
{
scanf("%d",&number);
insertElem(L,L.length,number);
}
break;

//删除线性表中存在的元素
case 5:
printf("请输入需要删除的元素的位置\n");
int loc;
scanf("%d",&loc);
deletenum(L, loc);
printf("删除后的线性表为\n");
printfs(L);
break;

//顺序表的按值查找
case 6:
int shu;
printf("请输入需要查找的值,程序将会返回该值的位置\n");
scanf("%d",&shu);
printf("%d",returnlocate(L,shu));
break;
//将顺序表中的元素翻转
case 7:
reverselist(L);
break;
//输出顺序表的元素
case 8:
printfs(L);
printf("\n");
break;
}
}
}

本科的时候没好好理解数据结构 考研的专业课开始 又重新翻阅 才发现当时的自己的肤浅

对此段代码有疑问的欢迎给我留言


猜你喜欢

转载自blog.csdn.net/huayuhuaxi/article/details/80740220