[数据结构]顺序表

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAXLEN 100

typedef int DataType;

typedef struct
{
DataType Data[MAXLEN];
int Length;

}SeqList;

SeqList L;


void InitList(SeqList *L)//初始化
{
L->Length=0;
}

void CreateList(SeqList *L)//创建
{
int i,n;
printf("\n请输入你要插入的元素个数!\n");
scanf("%d",&n);
printf("\n请输入%d个整数\n",n);
for(i=0;i<n;i++)
scanf("%d",&L->Data[i]);
L->Length=i;

}

void DispList(SeqList *L)//输出
{
int i;
for(i=0;i<L->Length;i++)
printf("%5d",L->Data[i]);
printf("\n");
}

int DelList(SeqList *L)//删除
{
int n;
printf("请输入你要删除的元素的位置\n");
scanf("%d",&n);
if(L->Length==0)
{
printf("线性表为空,不能删除\n");
return 0;
}

else if(n<1||n>L->Length)
{
printf("输出位置出错,删除失败\n");
return 0;
}

else 
{
for(n=n-1;n<L->Length;n++)
{
L->Data[n]=L->Data[n+1];

}
L->Length-=1;
printf("删除成功!删除后的线性表为:\n");
return 1;
}


}

int Lookup1(SeqList *L)//按值查找
{
int i,n,y=0;
printf("请输入你要查找的元素\n");
scanf("%d",&n);

for(i=0;i<L->Length;i++)
{
if(n==L->Data[i])
y=1;
}

if(y==0)
{
printf("你输入的值不存在于线性表!\n");
return 0;
}
else
{
printf("你查找的元素位置为:");
for(i=0;i<L->Length;i++)
{
if(n==L->Data[i])
printf(" %d",i);
}
printf("\n");
return 1;
}
}

int Lookup2(SeqList *L)//按位置查找
{
int n;
printf("请输入你要查找元素的位置\n");
scanf("%d",&n);
if(n<1||n>L->Length)
{
printf("位置出错!\n");
return 0;
}
else
{
printf("你查找元素的值为:%d\n",L->Data[n+1]);
return 1;
}
}

int Ins(SeqList *L)//插入
{
int n,i,num;
printf("请输入你要插入的位置\n");
scanf("%d",&n);
if(n<1||n>L->Length)
{
printf("插入位置出错\n");
return 0;
}
else
{
printf("请输入你要插入的元素\n");
scanf("%d",&num);
if(n==L->Length)
{
L->Data[n]=num;
L->Length++;
return 1;
}
else 
{
for(n-=1,i=L->Length;i>n;i--)
L->Data[i]=L->Data[i-1];
L->Data[n]=num;
L->Length++;
printf("插入元素成功,插入后的线性表为:\n");
return 1;
}
}
}


void Menu()
{
printf("\n        顺序栈的各种操作");
printf("\n==================================");
printf("\n|       1 建立线性表             |");
printf("\n|       2 插入操作               |");
printf("\n|       3 删除操作               |");
printf("\n|       4 按位置查找             |");
printf("\n|       5 按值查找               |");
printf("\n|       6 求线性表长度           |");
printf("\n|       0 返回                   |");
printf("\n==================================");
printf("\n请输入菜单号(0~6)");

}

main()
{
int number;
char ch='Y';

SeqList L;
InitList(&L);
while(ch=='Y'||ch=='y')
{

//	system("cls");
Menu();
scanf("%d",&number);
getchar();
switch(number)
{
case 1:

CreateList(&L);
printf("建立线性表成功\n");
DispList(&L);
break;
case 2:
Ins(&L);
if(Ins(&L))
{
DispList(&L);
}
break;
case 3:
DelList(&L);
break;
case 4:
Lookup2(&L);
break;
case 5:
Lookup1(&L);
break;
case 6:
printf("当前线性表的长度为:%d\n",L.Length);
break;
case 0:
ch='n';
break;
default:
printf("输入错误,请输入0~6选择!\n");

}

}
return 0;
}

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
顺序表是一种常见的数据结构,用于存储一组具有相同类型的元素。它的基本操作包括创建、查找、插入和删除等。 在C语言中,可以通过使用数组来实现顺序表。我们可以定义一个数组来存储顺序表的元素,然后通过索引来访问和操作其中的元素。引用中的代码展示了一个简单的顺序表的例子,它使用了C语言来实现。在这个例子中,我们可以看到如何创建一个顺序表、插入元素、删除元素以及查找元素的前驱和后继。 引用中的代码是一个测试顺序表基本操作的例子。它使用了一个自定义的List类来实现顺序表,并对其进行了各种操作,包括插入元素、删除元素、查找元素的前驱和后继以及遍历整个顺序表顺序表的结构体定义可以根据具体的需求进行定义。在引用中的代码中,定义了一个结构体ConnTimeout,其中包含了一个int类型的fd和一个time_t类型的timeout成员变量。这个结构体可以用来表示连接超时的信息。 总而言之,顺序表是一种常见的数据结构,可以通过使用数组来实现。在C语言中,可以使用数组和相关的操作来创建、查找、插入和删除顺序表中的元素。结构体的定义可以根据具体的需求进行自定义。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [数据结构顺序表c++代码](https://download.csdn.net/download/qq_46546083/13458006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C++数据结构顺序表(模板类实现)](https://blog.csdn.net/sagjhdj/article/details/123260460)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【数据结构顺序表(C++)](https://blog.csdn.net/qq_51604330/article/details/120600041)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值