C语言代码详细描述顺序线性表

目录
  • 代码内容包括:
  • 代码实现如下:
  • 总结

代码内容包括:

1.表的创建

2.增删改查插

3.界面跳转

代码实现如下:

#include <stdio.h>
#include<stdlib.h>
#define MaxSize 20
typedef int ElemType;//将int类型赋予别名
//创建结构体
typedef struct{
ElemType A[MaxSize];//MaxSize是给表的一个预估容量
int n;//n是指当前A的元素个数,记录当下表的大小
}seqList,*pSeqList;//给结构体赋予名字以及创建一个结构体类型的指针

//函数声明
void ADD(pSeqList L);
void Delete(pSeqList L);
void Insert(pSeqList L);
void welcome(pSeqList L);
void Correct(pSeqList L);
void search(pSeqList L);
void view(pSeqList L);
//表的创建
pSeqList CREATE(){
pSeqList L;
L=(pSeqList)malloc(sizeof(seqList));
if(L==NULL){
printf("Failure\n");//判断创建是否成功
return 0;
}
else{
printf("success!");
L->n=0;
}
return L;
}
//主函数
int main(){
pSeqList head;
head=CREATE();
welcome(head);
system("pause");
return 0;
}
//增添元素
void ADD(pSeqList L){
	system("cls");
	int k;
	for(k=0;k<L->n;k++){
	printf("第%d个元素:%d\n",k+1,L->A[k]);
	}
	int adder;
	int choose=0;
	do{
	if(L->n==MaxSize){
	printf("表已满,无法添加!\n");
	}
	else{
	printf("添加元素:");
    scanf("%d",&adder);
	L->A[L->n]=adder;
	L->n++;
	printf("已成功添加:%d 添加后元素个数为:%d\n\n",L->A[(L->n)-1],L->n);
	}
printf("是否继续添加?\n1、继续添加   2、返回主界面\n");
scanf("%d",&choose);
system("cls");//表示将当前页面清空
}while(choose==1);
	if(choose==2){
	welcome(L);}
	else welcome(L);
}
//删除
void Delete(pSeqList L){
	int j;
	int k;
	int i;
	int choose=0;
	for(k=0;k<L->n;k++){
	printf("第%d个元素:%d\n",k+1,L->A[k]);
	}
	do{
	system("cls");
	printf("删除界面\n");
	for(k=0;k<L->n;k++){
	printf("第%d个元素:%d\n",k+1,L->A[k]);
	}
	if(L->n==NULL){
	printf("表为空!");
	break;
	}
	printf("请输入你要删除第几个元素:");
	scanf("%d",&i);
	if(i<1||i>L->n){
	printf("\n删除的数据位置有误!\n");
	}
	else{
		for(j=i;j<=L->n-1;j++)
		    L->A[j-1]=L->A[j];
		L->n--;
		printf("删除成功!\n");
	}
	printf("删除后的元素为:\n");
	for(k=0;k<L->n;k++){
	printf("第%d个元素:%d\n",k+1,L->A[k]);
	}
	printf("是否继续删除?\n1.继续删除  2.返回主界面\n");
	scanf("%d",&choose);
}while(choose==1);
	if(choose==2){
	welcome(L);}
	else welcome(L);
}
//插入元素
void Insert(pSeqList L){
int i;
int item;
int j;
int choose=0;
int choosex;
int k;
system("cls");
if(L->n==NULL){
			printf("\n\n\n元素为空!是否添加元素?1.是  2.返回主菜单");
			scanf("%d",&choosex);
			if(choosex==1)
			{
				ADD(L);
			}
			else welcome(L);
		}
for(k=0;k<L->n;k++){
	printf("第%d个元素:%d\n",k+1,L->A[k]);
	}
do{
printf("插入元素\n");
if(L->n==MaxSize){
printf("表满!\n");
break;
}
printf("请输入你想插入的位置:");
scanf("%d",&i);
system("cls");
if(i<1||i>L->n+1){
printf("\n插入位置错误!\n");
}
printf("请输入你想插入的数据:");
scanf("%d",&item);
for(j=L->n-1;j>i-2;j--)
		L->A[j+1]=L->A[j];
L->A[i-1]=item;
L->n++;
printf("插入成功!插入后的数据为;\n");
for(k=0;k<L->n;k++){
	printf("第%d个元素:%d\n",k+1,L->A[k]);
	}
printf("\n是否继续插入?\n1.继续插入  2.返回主界面");
scanf("%d",&choose);
}while(choose==1);
	if(choose==2){
	welcome(L);}
	else welcome(L);
}
//修改元素
void Correct(pSeqList L){
	int cn;
	int item;
	int k;
	int choose;
		system("cls");
		if(L->n==NULL){
			printf("\n\n\n元素为空!是否添加元素?1.是  2.返回主菜单");
			scanf("%d",&choose);
			if(choose==1)
			{
				ADD(L);
			}
			else welcome(L);
		}
		//*******************************************
	   for(k=0;k<L->n;k++)
	  {
     	printf("第%d个元素:%d\n",k+1,L->A[k]);
       }
	   //********************************************
	   do{
	      printf("请输入你要修改的元素序号:");
	      scanf("%d",&cn);
	      if(cn<1||cn>L->n){
			  printf("输入错误请重新输入:");
		  }
	   }while(cn<1||cn>L->n);
	printf("\n请输入你想修改成的数据:");
	scanf("%d",&item);
	L->A[cn-1]=item;
	system("cls");
	printf("修改后的数据为:\n");
	for(k=0;k<L->n;k++)
	{
	printf("第%d个元素:%d\n",k+1,L->A[k]);
	}
	printf("是否继续修改?1.是  2.返回主菜单");
	scanf("%d",&choose);
	if(choose==1){
	Correct(L);
	}
	else welcome(L);
}
//查找元素
void search(pSeqList L){
	int mchoose;
	int choose;
	int choose1;
	int choose2;
	int num;
	int item;
	int i;
	int j=0;
	system("cls");
	if(L->n==NULL){
			printf("\n\n\n元素为空!是否添加元素?1.是  2.返回主菜单");
			scanf("%d",&choose);
			if(choose==1)
			{
				ADD(L);
			}
			else welcome(L);
		}
	printf("*****查找方式选择*****\n\n1.输入序号以寻找对应数据\n2.输入数据找到对应的序号\n3.返回主菜单\n");
	scanf("%d",&mchoose);
	system("cls");
	if(mchoose==3){
	welcome(L);
	}
	if(mchoose==1)
	{
		do
		{
	     printf("请输入序号:");
	     scanf("%d",&num);
	     printf("序号:%d 数据:%d\n",num,L->A[num-1]);
	     printf("1.继续输入  2.返回上一级");
		 scanf("%d",&choose2);
	    }while(choose2==1);
	   if(choose2!=1)
	   {
	   search(L);
	   }
	}
	else if(mchoose==2)
	{
		do
	   {
		printf("请输入数据:");
	    scanf("%d",&item);
		for(i=0;i<L->n;i++)
		{
			if(item==L->A[i])
			{
			printf("元素:%d  序号:%d\n",i+1,item);j=1;
			}
		}
		if(j==0){printf("您输入的元素不存在!");}
        printf("1.继续输入  2.返回上一级");
		scanf("%d",&choose1);
	    }while(choose1==1);
	   if(choose1!=1){
	   search(L);
	   }
	}
	else
	{
       search(L);
	}
}
//浏览全部元素
void view(pSeqList L)
{
	int k;
	char choose[10];
	int choosey;
	if(L->n==NULL)
	  {
			printf("\n\n\n元素为空!是否添加元素?1.是  2.返回主菜单");
			scanf("%d",&choosey);
			if(choosey==1)
			{
				ADD(L);
			}
			else welcome(L);
		}
	for(k=0;k<L->n;k++)
	  {
     	printf("第%d个元素:%d\n",k+1,L->A[k]);
       }
	printf("输入任意字符以返回菜单");
	scanf("%s",choose);
	getchar();
	if(choose!=NULL)
	{
		welcome(L);
	}
}
//欢迎界面
void welcome(pSeqList L){
	pSeqList head;
	head=L;
	int welchoose=0;
	system("cls");
printf("\t\t\t\***************************************\n");
printf("\t\t\t\t\t顺序表功能选择\n");
printf("\t\t\t\t\t1.添加元素\n");
printf("\t\t\t\t\t2.删除元素\n");
printf("\t\t\t\t\t3.插入元素\n");
printf("\t\t\t\t\t4.修改元素\n");
printf("\t\t\t\t\t5.查找元素\n");
printf("\t\t\t\t\t6.浏览元素\n");
printf("\t\t\t\***************************************\n");
scanf("%d",&welchoose);
switch(welchoose){
case 1:ADD(head);break;
case 2:Delete(head);break;
case 3:Insert(head);break;
case 4:Correct(head);break;
case 5:search(head);break;
case 6:view(head);break;
default :printf("输入错误!");main();break;
}
}

总结

以上为线性顺序表的基本操作,若发现错误,敬请各位读者指正!

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • C语言线性表的顺序表示与实现实例详解

    1.概述 通常来说顺序表是在计算机的内存中以数组的形式保存的线性表,是用一组地址连续的存储单元依次存储数据元素的线性数据结构.线性表采用顺序存储的方式存储就称之为顺序表.顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中. 将表中元素一个接一个的存入一组连续的存储单元中,这种存储结构就是顺序结构. 采用顺序存储结构的线性表简称为" 顺序表".顺序表的存储特点是:只要确定了起始位置,表中任一元素的地址都通过下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1≤

  • C语言编程数据结构线性表之顺序表和链表原理分析

    目录 线性表的定义和特点 线性结构的特点 线性表 顺序存储 顺序表的元素类型定义 顺序表的增删查改 初始化顺序表 扩容顺序表 尾插法增加元素 头插法 任意位置删除 任意位置添加 线性表的链式存储 数据域与指针域 初始化链表 尾插法增加链表结点 头插法添加链表结点 打印链表 任意位置的删除 双向链表 测试双向链表(主函数) 初始化双向链表 头插法插入元素 尾插法插入元素 尾删法删除结点 头删法删除结点 doubly-Linked list.c文件 doubly-Linkedlist.h 线性表的定

  • C语言线性表顺序存储结构实例详解

    C语言线性表顺序存储结构实例详解 1. 什么是顺序存储结构? 用一段地址连续的存储单元依次存储线性表的数据元素. 2.线性表的顺序存储结构 #include<stdio.h> #include<stdlib.h> #define Max 80 //存储空间初始分配量 #define Increment 10 //存储空间分配增量 typedef struct { int *elem; // 存储空间基地址,此处为int型,视情况而定 int length; // 元素表当前长度 i

  • C语言代码详细描述顺序线性表

    目录 代码内容包括: 代码实现如下: 总结 代码内容包括: 1.表的创建 2.增删改查插 3.界面跳转 代码实现如下: #include <stdio.h> #include<stdlib.h> #define MaxSize 20 typedef int ElemType;//将int类型赋予别名 //创建结构体 typedef struct{ ElemType A[MaxSize];//MaxSize是给表的一个预估容量 int n;//n是指当前A的元素个数,记录当下表的大小

  • C语言超详细讲解顺序表的各种操作

    目录 顺序表是什么 顺序表的结构体 顺序表的接口函数 顺序表相关操作的菜单 顺序表的初始化 添加元素 陈列元素 往最后加元素 往前面加元素 任意位置加元素 删除最后元素 删除前面元素 删除任意元素 整体代码(fun.h部分) 整体代码(fun.cpp部分) 整体代码(主函数部分) 结果展示 顺序表是什么 顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素.使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数

  • 顺序线性表的代码实现方法

    1.采用一个数组实现一个顺序线性表中添加元素.删除元素等基本操作 package com.ietree.basic.datastructure.Sequence; import java.util.Arrays; /** * 顺序线性表 * * @param <T> * @author Dylan */ public class SequenceList<T> { private final int DEFAULT_SIZE = 16; // 保存数组的长度 private int

  • php实现的顺序线性表示例

    本文实例讲述了php实现的顺序线性表.分享给大家供大家参考,具体如下: <?php /* * 线性顺序表 ,其是按照顺序在内存进行存储,出起始和结尾以外都是一一连接的(一般都是用一维数组的形式表现) * * GetElem: 返回线性表中第$index个数据元素 * ListLength: 返回线性表的长度 * LocateElem: 返回给定的数据元素在线性表中的位置 * PriorElem: 返回指定元素的前一个元素 * NextElem: 返回指定元素的后一个元素 * ListInsert

  • C语言线性表的链式表示及实现详解

    目录 前言 代码实现 1. 单链表的结点构造 2. 构造一个空的头结点 3. 对线性表进行赋值 4.对线性表进行销毁 5.对线性表进行重置 6.判断线性表是否为空 7.获取线性表的长度 8.获取线性表某一位置对应的元素 9.在线性表某一位置插入元素 10.删除线性表某一位置的元素 11.求线性表某一元素的前驱 12.求线性表某一元素的后继 13.打印线性表 运行结果演示 源码 前言 线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,而线性表的链式存储特点则是用一组任意的存储

  • C语言实现线性表的基本操作详解

    目录 前言 一.实训名称 二.实训目的 三.实训要求 四.实现效果 五.顺序存储代码实现 六.链式存储代码实现 前言 这里使用的工具是DEV C++ 可以借鉴一下 一.实训名称 线性表的基本操作 二.实训目的 1.掌握线性表的基本概念 2.掌握线性表的存储结构(顺序存储与链式存储) 3.掌握线性表的基本操作 三.实训要求 1.线性表可以顺序表也可以用单链表实现,鼓励大家用两种方式实现. 2.创建线性表时,数据从键盘输入整形数据 3.线性表类型定义和或各种操作的实现,可以用教材给出的方法,也可以自

  • java线性表的存储结构及其代码实现

    Java数据结构学习笔记第一篇: 用程序后在那个的数据大致有四种基本的逻辑结构: 集合:数据元素之间只有"同属于一个集合"的关系 线性结构:数据元素之间存在一个对一个的关系 树形结构:数据元素之间存在一个对多个关系 图形结构或网状结构:数据元素之间存在多个对多个的关系 对于数据不同的逻辑结构,计算机在物理磁盘上通常有两种屋里存储结构 顺序存储结构 链式存储结构 本篇博文主要讲的是线性结构,而线性结构主要是线性表,非线性结构主要是树和图. 线性表的基本特征: 总存在唯一的第一个数据元素

  • java数据结构基础:线性表

    目录 前言 需求分析 编码 add方法 getIndex方法 pop方法 insert方法 getAll 全部代码 总结 前言 其实线性表在生活中和栈的结构差不多.昨天总结了一篇单链表,也是线性表的一种. 今天用另一种写法来控制指针的移动实现数据的顺序存储结构. 需求分析 首先要明确,这种顺序存储结构的线性表底层用什么.根据之前查看过的源码来看,list一般都是以数组为底层.我们也不例外. 其次,我们还得去定义好线性表的长度,以及每个元素的指针. private Object[] arr; //

  • C语言线性表中顺序表超详细理解

    目录 一.本章重点 二.线性表 三.顺序表 四.静态顺序表接口实现 4.1顺序表初始化 4.2顺序表打印 4.3顺序表尾插 4.4顺序表尾删 4.5顺序表头插 4.6顺序表头删 4.7顺序表任意位置插入 4.8顺序表任意位置删除 五.动态顺序表接口实现 5.1顺序表的初始化 5.2顺序表打印 5.3顺序表尾插 5.4顺序表尾删 5.5顺序表头插 5.6顺序表头删 5.7顺序表任意位置插入 5.8顺序表任意位置删除 六.在线0j练习 一.移除元素(力扣) 二.合并两个有序数组(力扣) 一.本章重点

随机推荐