数据结构-顺序表基本操作-C语言代码

顺序表的基本操作:

1.顺序表-初始化
2.顺序表-获得元素
3.顺序表-查找元素
4.顺序表-插入元素
5.顺序表-删除元素

1.顺序表-初始化

#include<stdio.h>
#include<stdlib.h>
#define maxSize 100

//顺序表的结构体定义 
typedef struct 
{
	int *data;  //存放顺序表元素的数组 
	int length; //存放顺序表的长度 
 }Sqlist;		//顺序表类型的定义 


//初始化顺序表 
Sqlist initList()
{	
 	Sqlist L;
 	L.data = (int*)malloc(maxSize*sizeof(int));
 	L.length = 0; 
 	return L;
 }
 
//展示表中数据 
void display(Sqlist L)
{
	printf("表中的数据元素为:\n");
    for(int i=0;i<L.length;i++)
	{
        printf("%d\t",L.data[i]);
    }
    printf("\n");
}

int main()
{
 	//用户自定义输入表中元素 
	Sqlist L = initList();
 	int n;
 	printf("请输入表的个数并且输入元素(用空格分开):"); 
 	scanf("%d",&n);
 	for(int i=0;i<n;i++)
	{
 		scanf("%d",&L.data[i]);
    	L.length++;
    }
    //测试展示表中元素 
    display(L);
} 

2.顺序表-获得元素

用 e 返回 L 中 p 位置上的元素,代码如下:

#include<stdio.h>
#include<stdlib.h>
#define maxSize 100

//顺序表的结构体定义 
typedef struct 
{
	int *data;  //存放顺序表元素的数组 
	int length; //存放顺序表的长度 
 }Sqlist;		//顺序表类型的定义 


//初始化顺序表 
Sqlist initList()
{	
 	Sqlist L;
 	L.data = (int*)malloc(maxSize*sizeof(int));
 	L.length = 0; 
 	return L;
 }
 
//展示表中数据 
void display(Sqlist L)
{
	printf("表中的数据元素为:\n");
    for(int i=0;i<L.length;i++){
        printf("%d\t",L.data[i]);
    }
    printf("\n");
    
}


//获得指定位置的元素,即用e返回L中p位置上的元素,获得成功则返回1,否则返回0. 
int getElem(Sqlist L, int p, int &e)
{
	if (p<0||p>L.length-1)
		return 0;
	e = L.data[p];
	return 1;
 } 



int main()
{
 	//用户自定义输入表中元素 
	Sqlist L = initList();
 	int n;
 	printf("请输入表的个数并且输入元素(用空格分开):"); 
 	scanf("%d",&n);
 	for(int i=0;i<n;i++)
	{
 		scanf("%d",&L.data[i]);
        L.length++;
    }
    
	//测试展示表中元素 
    display(L);
    
    
	//测试获得指定位置元素
	int p,e;
    printf("请输入要获得元素的下标:");
	scanf("%d",&p); 
    int result = getElem(L,p,e);
    printf("%d\n",result);
    printf("这个位置的元素为:%d\n",e); 
	
} 

3.顺序表-查找元素

在顺序表中查找第一个值等于 e 的元素,并返回其下标,代码如下:

#include<stdio.h>
#include<stdlib.h>
#define maxSize 100

//顺序表的结构体定义 
typedef struct 
{
	int *data;  //存放顺序表元素的数组 
	int length; //存放顺序表的长度 
 }Sqlist;		//顺序表类型的定义 


//初始化顺序表 
Sqlist initList()
{	
 	Sqlist L;
 	L.data = (int*)malloc(maxSize*sizeof(int));
 	L.length = 0; 
 	return L;
 }
 
//展示表中数据 
void display(Sqlist L)
{
	printf("表中的数据元素为:\n");
    for(int i=0;i<L.length;i++){
        printf("%d\t",L.data[i]);
    }
    printf("\n");
    
}

//查找第一个值等于e的元素 
int findElem(Sqlist L, int e )
{
	int i;
	for(i=0;i<L.length;i++)
	{
		if (e==L.data[i])
			return i;	//若找到,则返回下标 
	}
	return -1;			//没有找到,返回-1 
}

int main()
{
 	//用户自定义输入表中元素 
	Sqlist L = initList();
 	int n;
 	printf("请输入表的个数并且输入元素(用空格分开):"); 
 	scanf("%d",&n);
 	for(int i=0;i<n;i++){
 		scanf("%d",&L.data[i]);
        L.length++;
    }
    //测试展示表中元素 
    display(L);
    

	//测试查找元素 
    int e;
    printf("请输入要查找的元素");
    scanf("%d",&e);
    int result = findElem(L,e);
    printf("找到了与e相等的第一个元素的位置为%d\n",result);

} 

4.顺序表-插入元素

在顺序表 L 的第 p 个位置上插入新的元素 e ,如果 p 的输入不正确,则返回0,代表插入失败,如果 p 的输入正确,则将顺序表第 p 个元素及以后元素右移一个位置,腾出一个空位置插入新元素,顺序表长度增加1,插入操作成功,返回1。代码如下:

#include<stdio.h>
#include<stdlib.h>
#define maxSize 100

//顺序表的结构体定义 
typedef struct 
{
	int *data;  //存放顺序表元素的数组 
	int length; //存放顺序表的长度 
 }Sqlist;		//顺序表类型的定义 


//初始化顺序表 
Sqlist initList()
{	
 	Sqlist L;
 	L.data = (int*)malloc(maxSize*sizeof(int));
 	L.length = 0; 
 	return L;
 }
 
//展示表中数据 
void display(Sqlist L)
{
	printf("表中的数据元素为:\n");
    for(int i=0;i<L.length;i++){
        printf("%d\t",L.data[i]);
    }
    printf("\n");
    
}


//在顺序表的第p个位置上插入新的元素e。如果p输入不正确,返回0,p输入正确,插入成功,返回1。 
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;
 } 



int main()
{
 	//用户自定义输入表中元素 
	Sqlist L = initList();
 	int n;
 	printf("请输入表的个数并且输入元素(用空格分开):"); 
 	scanf("%d",&n);
 	for(int i=0;i<n;i++){
 		scanf("%d",&L.data[i]);
        L.length++;
    }
    //测试展示表中元素 
    display(L);
    
    
    //测试插入元素 
    int p,e;
    printf("请输入要插入的位置:");
	scanf("%d",&p); 
	printf("请输入要插入的元素:");
	scanf("%d",&e);
    int result = insertElem(L,p,e);
    printf("%d\n",result);
    
    
    //插入后展示表中元素 
	display(L);
    
} 

5.顺序表-删除元素

删除顺序表 L 中下标为 p 的元素,成功返回1,否则返回0,并将被删除元素的值赋给e。

#include<stdio.h>
#include<stdlib.h>
#define maxSize 100

//顺序表的结构体定义 
typedef struct 
{
	int *data;  //存放顺序表元素的数组 
	int length; //存放顺序表的长度 
 }Sqlist;		//顺序表类型的定义 


//初始化顺序表 
Sqlist initList()
{	
 	Sqlist L;
 	L.data = (int*)malloc(maxSize*sizeof(int));
 	L.length = 0; 
 	return L;
 }
 
//展示表中数据 
void display(Sqlist L)
{
	printf("表中的数据元素为:\n");
    for(int i=0;i<L.length;i++){
        printf("%d\t",L.data[i]);
    }
    printf("\n");
    
}


//删除表L中下标为p的元素,成功返回1,否则返回0,并将被删除元素的值赋给e。 
int deleteElem(Sqlist &L, int p, int &e)
{
	int i;
	if (p<0||p>L.length-1)
		return 0;
	e = L.data[p];
	for(i=p;i<L.length-1;++i)
	{
		L.data[i] = L.data[i+1];
	}
	--L.length;
	return 1;
 } 



int main()
{
 	//用户自定义输入表中元素 
	Sqlist L = initList();
 	int n;
 	printf("请输入表的个数并且输入元素(用空格分开):"); 
 	scanf("%d",&n);
 	for(int i=0;i<n;i++){
 		scanf("%d",&L.data[i]);
        L.length++;
    }
    
	//测试展示表中元素 
    display(L);
    
    
	//测试删除表中元素
	int p,e;
    printf("请输入要删除元素的下标:");
	scanf("%d",&p); 
    int result = deleteElem(L,p,e);
    printf("%d\n",result);
    printf("删除的元素为:%d\n",e); 
	
	
	//删除后展示表中元素 
	display(L); 
    
} 
发布了246 篇原创文章 · 获赞 155 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/suxiaorui/article/details/104069358