链表

#include <iostream>
/* 定义ElemType为int类型 */
typedef int ElemType;

/*顺序表存储空间的总分配量*/
#define MAXSIZE 100
#define FALSE 0
#define TRUE 1

/* 顺序存储类型 */
typedef struct
{ElemType data[MAXSIZE]; /*存放线性表的数组*/
 int length;               /* length是顺序表的长度*/
}SeqList;

/* 初始化顺序表 */
SeqList SeqListInit( )
{SeqList L;
 L.length=0;
 return L;
 }

/* 清空顺序表 */
SeqList ListClear(SeqList L)
{L.length=0;
 return L;
}

/* 求顺序表长度 */
int ListLength(SeqList L)
 {return(L.length);}

/* 检查顺序表是否为空 */
int ListEmpty(SeqList L)
{if(L.length) return(FALSE);
 else return(TRUE);
}

/*检查顺序表是否为满 */
int ListFull(SeqList L)
{if(L.length==MAXSIZE) return(TRUE);
 else return(FALSE);
}

/* 遍历顺序表 */
void ListTraverse(SeqList L)
{int i;
 if(L.length<=0) printf("顺序表为空\n");
 else {printf("当前顺序表中的元素为:\n");
	   for(i=1;i<=L.length;i++) printf("%d ",L.data[i-1]);
        printf("\n");
 }

}

/* 从顺序表中查找元素 */

ElemType ListGet(SeqList L ,int i)
{ElemType e;
 e=L.data[i-1]; return(e);
}


/* 从顺序表中查找与给定元素值相同的元素在顺序表中的位置 */
int ListLocate(SeqList L, ElemType x)
{int i=0;
 while(i<L.length && L.data[i]!=x)
            i++;
 if (i<L.length)  return (i+1);
 else  return 0;
}

/* 向顺序表中插入元素 */
SeqList ListInsert(SeqList L,int i,ElemType x)
{int j;
 if(L.length==MAXSIZE)
     printf("表满,不能插入\n");
 else  if(i<1||i>L.length+1)
	 printf("插入位置不正确\n");
       else { for(j=L.length-1;j>=i-1;j--)
		L.data[j+1]=L.data[j];
	      L.data[i-1]=x;
	      L.length++;
	      }
 return L;
 }

/* 从顺序表中删除元素 */
SeqList ListDelete(SeqList L,int i)
{int j;ElemType x;
 if (i<1||i>L.length)
	printf("删除位置不正确\n");
 else {x=L.data[i-1];
		 for(j=i;j<=L.length-1;j++)
		 L.data[j-1]=L.data[j];
		 L.length--;
		 printf("%d已被删除\n",x);
		 }
 return L;
}

/*求顺序表中元素的前驱*/
ElemType SeqListPrior(SeqList L,ElemType e)
{int i=0;
 while(i<L.length&&L.data[i]!=e)
	i++;
 if(i==0) {printf("第一个元素没有前驱\n");return 0;}
 else if(i<=L.length-1)  return(L.data[i-1]);
		else  {printf("不存在值为%d的元素\n",e);return 0;}
}

/*求顺序表中元素的后继*/
ElemType SeqListNext(SeqList L,ElemType e)
{int i=0;
 while(i<L.length&&L.data[i]!=e)
	 i++;
 if(i==L.length-1) {printf("最后一个元素没有后继\n");return 0;}
 else if(i<L.length-1)  return(L.data[i+1]);
		else  {printf("不存在值为%d的元素\n",e);return 0;}
}


int scan()
{int d;
 printf("请选择所要进行的操作\n");
 printf("1.初始化 2.清空3.求顺序表长度4.检查顺序表是否为空\n");
 printf("5.检查顺序表是否为满 6.遍历顺序表 7.从顺序表中查找元素\n");
 printf("8.从顺序表中查找与给定元素值相同的元素在顺序表中的位置\n");
 printf("9.向顺序表中插入元素10. 从顺序表中删除元素\n");
 printf("11.求元素的前驱     12.求元素的后继\n");
 printf("其他键退出......\n");
 scanf("%d",&d);
 return(d);
}

main()
{int quit=0;
int i,location;
 ElemType e,prior,next;
 SeqList L;
 printf("第一次操作需选择初始化\n");
 while(!quit)
 switch(scan())
 {case 1:L=SeqListInit();break;
 case 2:ListClear(L);break;
 case 3:printf("顺序表的长度为%d\n",ListLength(L));break;
 case 4:if(ListEmpty(L))printf("顺序表为空\n");else printf("顺序表不为空\n");break;
 case 5:if(ListFull(L))printf("顺序表满\n");else printf("顺序表不满\n");break;
 case 6:ListTraverse(L);
		break;
 case 7:printf("请输入要查找的元素的位置\n");
	scanf("%d",&i);
	if(L.length==0) printf("顺序表已空\n");
	else  if(i<=0||i>L.length) printf("查找的位置不正确\n");
	      else
			  printf("顺序表中第%d个元素的值为:%d\n",i,ListGet(L,i));
	break;
 case 8:printf("请输入要查找的元素的值\n");
	scanf("%d",&e);
	if(L.length==0) printf("顺序表已空\n");
	else 
	{location=ListLocate(L,e);
	 if(location==0) printf("顺序表中不存在值为%d的元素\n",e);
	 else printf("顺序表中%d的位置是:%d\n",e,ListLocate(L,e));
	}
	break;
 case 9:printf("请输入要插入的元素的位置和其值:\n");
	scanf("%d%d",&i,&e);
	L=ListInsert(L,i,e);
	break;
 case 10:printf("请输入要删除的元素的位置:\n");
	 scanf("%d",&i);
	 L=ListDelete(L,i);
	 break;
 case 11:scanf("%d",&e);
	 prior=SeqListPrior(L,e);
	 if(prior) printf("%d的前驱是:%d\n",e,prior);break;
 case 12:scanf("%d",&e);
	 next=SeqListNext(L,e);
	 if(next) printf("%d的后继是:%d\n",e,next);break;
 default:quit=1;}
 return 0;
}



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值