这篇文章主要用代码介绍了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;
}
}
总结
以上为线性顺序表的基本操作,若发现错误,敬请各位读者指正!
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程学习网的更多内容!
沃梦达教程
本文标题为:C语言代码详细描述顺序线性表
基础教程推荐
猜你喜欢
- C++中的atoi 函数简介 2023-01-05
- 详解c# Emit技术 2023-03-25
- C++使用easyX库实现三星环绕效果流程详解 2023-06-26
- C语言基础全局变量与局部变量教程详解 2022-12-31
- C++详细实现完整图书管理功能 2023-04-04
- 一文带你了解C++中的字符替换方法 2023-07-20
- C语言 structural body结构体详解用法 2022-12-06
- C/C++编程中const的使用详解 2023-03-26
- 如何C++使用模板特化功能 2023-03-05
- C利用语言实现数据结构之队列 2022-11-22