实验一 顺序表、单链表基本操作的实现

该实验旨在掌握顺序表和单链表的基本操作,包括存储结构、建立、查找、插入和删除。对于顺序表,涉及输入整型序列建立表、遍历、查找、插入和删除功能的函数实现。在单链表部分,将建立无序链表、遍历、在非递减有序链表中插入和删除元素。所有操作都在主函数的菜单驱动程序中进行演示。
摘要由CSDN通过智能技术生成

实验一 顺序表、单链表基本操作的实现

实验目的
1、顺序表
(1)掌握顺序表的存储结构形式及其描述
(2)掌握顺序表的建立、查找、插入、删除操作
2、链表
(1)掌握单链表的存储结构形式及其描述
(2)掌握单链表的建立、查找、插入和删除操作
实验内容
1、顺序表

  1. 编写函数,输入一组整型元素序列,建立一个顺序表。
  2. 编写函数,实现对该顺序表的遍历(每个元素被访问一次且仅被访问一次)。
  3. 编写函数,在顺序表中顺序查找某一元素,查找成功则返回其存储位置i,否则返回错误信息。
  4. 编写函数,实现在顺序表的第i个位置上插入一个元素x。
  5. 编写函数,实现删除顺序表中第i个元素。
  6. 编写一个主函数,在主函数中设计一个简单的菜单,分别调用上述函数。
    2、链表
  7. 编写函数,实现随机产生或键盘输入一组元素,建立一个带头结点的单链表(无序)。
  8. 编写函数,实现遍历单链表。
  9. 编写函数,在非递减有序单链表中插入一个元素使链表仍然有序。
  10. 编写函数,实现在非递减有序链表中删除值为x的结点。
  11. 编写一个主函数,在主函数中设计一个简单的菜单,分别调用上述函数。

顺序表

#include<iostream>
#include<fstream>
using namespace std; 
#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 100 
#define ERROR 0 

//定义顺序表 
typedef struct
{
   
  int *elem;
  int Length;
}SqList;

//创建顺序表 
int InitiList(SqList &L)
{
   //构造一个空的顺序表L 
	L.elem=new int[MAXSIZE];//为顺序表分配一个大小为MAXSIZE的数组空间 
	if(!L.elem)
	{
   
		printf("空间分配失败!");
	}
	L.Length=0;
	return 1;
} 
	 
//依次输入顺序表元素
void inputSqList(SqList &L,int y)
{
   
	int i,x;
	printf("请依次输入顺序表:");
	for(i=0;i<y;i++)
	{
   
		scanf("%d",&x);
		L.elem[i]=x;
	}
	L.Length=y;
 } 
	
//实现对该顺序表的遍历
void outputSqList(SqList &L)
{
   
	int i;
	printf("[\t");
	for(i=0;i<L.Length;i++)
	{
   
		printf("%d\t",L.elem[i]);
	 } 
	 printf("]");
 } 


int Insert_SqList(SqList &L,int i,int x)   /*插入运算函数*/
{
     //判断插入的位置是否合理 
	if(i<0||i>L.Length+1){
   
		printf("插入的位置不合理!");
		return 0; 
	}
	//判断存储空间是否已满 
	if(L.Length==MAXSIZE){
    
	    printf("存储空间已满!");
	    return 0;
	} 
	//在顺序表的第i个位置上插入一个元素x 
	for(int j=L.Length-1;j>=i-1;j--)
	L.elem[j+1]=L.elem[j];//插入之后的元素后移
	L.elem[i-1]=x;//将新元素x放入第i个位置 
	++L.Length;//表长加1
	return 1;
}

int Delete_SqList(
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值