数据结构考研复习(顺序表) – HOr7z – 博客园(数据结构考研刷什么最好)
数据结构考研复习(顺序表)
为了方便自己理解,将c和c++的实现进行了混合,主体内容基本上按照王道考研复习指导书的内容进行实现。
所使用的编译器为code::blocks 13.12
#include<stdio.h>
#define initsize 100
typedef struct{
int *data;
int length;
}sqlist;
/* -1- 初始化顺序表*/
bool init_list(sqlist &l){
l.data = new int[initsize];
l.length = 0;
return true;
}
/* -2- 插入元素*/
bool insert_list(sqlist &l, int i, int e){
if(i < 1 || i > l.length + 1){
printf(“插入位置不合法!\n”);
return false;
}
if(l.length >= initsize){
printf(“顺序表空间已满!\n”);
return false;
}
for(int j = l.length;j >= i;j–){
l.data[j] = l.data[j-1];
}
l.data[i-1] = e;
l.length++;
return true;
}
/* -3- 获取元素*/
bool get_element(sqlist l,int i,int &e){
if(i < 1 || i > l.length)
{
printf(“访问位置不合法!”);
return false;
}
e = l.data[i-1];
return true;
}
/* -4- 删除元素*/
bool delete_element(sqlist l,int i,int &e){
if(i < 1 || i > l.length)
{
printf(“访问位置不合法!”);
return false;
}
e = l.data[i-1];
for(int j = i;j <l.length;j++)
{
l.data[j-1] = l.data[j];
}
l.length–;
printf(“删除成功!”);
return true;
}
/* -5- 查找元素*/
int locate_element(sqlist l,int e){
for (int i = 1;i < l.length;i++)
{
if(l.data[i] == e)
{
return i+1;
}
}
return 0;//这里不能和前面一样返回true
}
int main(){
/*初始化*/
sqlist l;
if(!init_list(l))
{
printf(“创建失败!\n”);
}
else
{
printf(“创建成功!\n”);
printf(“==========\n”);
}
int i, e_1, l;
printf(“请输入顺序表长度:\n”);
scanf(“%d”,&l);
printf(“依次输入%d个值\n”,l);
for(int i = 1;i <= l;i++){
scanf(“%d”,&e_1);
insert_list(l,i,e_1);
}
/*输出顺序表*/
for(int i=1;i <= l.length;i++){
int e_2;
get_element(l,i,e_2);
printf(“%d “,e_2);
}
printf(“\n”);
/*查找元素*/
printf(“请输入要查找的元素:\n”);
int e_3;
scanf(“%d”,&e_3);
int temp = locate_element(l,e_3);
if(!temp)
{
printf(“顺序表中没有此值!\n”);
}
else
{
printf(“%d所处的位置是顺序表的第%d位\n”,e_3,temp);
printf(“===============================\n”);
}
/*删除元素*/
printf(“请输入要删除元素的位置:\n”);
int e_4,k;
scanf(“%d”,&k);
delete_element(l,k,e_4);
/*再次输出顺序表*/
printf(“当前顺序表为:\n”);
for(int j = 1;j < l.length;j++){
int e_5;
get_element(l,j,e_5);
printf(“%d
“,e_5);
}
return 0;
}
发表评论