这篇文章主要用代码介绍了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语言中sizeof如何在自定义函数中正常工作 2023-04-09
- C语言详解float类型在内存中的存储方式 2023-03-27
- C语言qsort()函数的使用方法详解 2023-04-26
- C++ 数据结构超详细讲解顺序表 2023-03-25
- ubuntu下C/C++获取剩余内存 2023-09-18
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- Qt计时器使用方法详解 2023-05-30
- Easyx实现扫雷游戏 2023-02-06