【线性表一:】两种存储结构的代码实现:顺序存储和链式存储

本文介绍了线性表的两种基本存储结构——顺序存储和链式存储的C语言实现,包括顺序表的创建,以及链式表的创建、插入、查找和删除操作。同时,还探讨了头指针循环单链表和双向链表的具体实现细节。
摘要由CSDN通过智能技术生成

第一个:顺序表:(未用ElemType ,全部设为int类型)

#include <stdio.h>
#include <malloc.h>
#define MAX 100
#define ERROR 0
#define TRUE 1
 
typedef struct
{
    intelem[MAX];
    int last;
}SeqList;
 
void InitList(SeqList *L,int e)  //建立
{
    L->last=e-1;
   
}
 
int Insert(SeqList *L,int i,int e)  //插入
{
    int k;
    if((i<1)|| (i>L->last+2))
        returnERROR;
    if(L->last>= MAX-1)
        returnERROR;
    for(k=L->last;k>=i-1;k--)
        L->elem[k+1]=L->elem[k];
    L->elem[i-1]=e;
    L->last++;
    return TRUE;
}
int Delete(SeqList *L,int i,int *e)  //删除 
{
    int k;
    if((i<1)|| (i>L->last+1))
        returnERROR;
    *e =L->elem[i-1];
    for(k=i;k<=L->last;k++)
        L->elem[k-1]=L->elem[k];
    L->last--;
    return TRUE;
}
int Locate(SeqList L,int e) //查找
{
    int i=0;
    while((i<=L.last)&& (L.elem[i]!=e))
        i++;
    if(i<=L.last)
        returni+1;
    else
        returnERROR;
}
void menu()
{
    printf("                     请第一步建立线性表\n");
    printf("*********1、建立线性表***********\n");
    printf("**********2、插入**********\n");
    printf("**********3、删除**********\n");
    printf("**********4、查找**********\n");
    printf("**********5、遍历输出********\n");
    printf("**********6、退出**********\n");
}
 
int main()
{
    intnum,length,number,location;
    int i,e;
    int *data;
    data=(int*)malloc(sizeof(int));
    SeqList *L;
    menu();
    while(1)
    {
        printf("请输入你的选择:\n");
        scanf("%d",&num);
        switch(num)
        {
        case 1:
            L=(SeqList*)malloc(sizeof(SeqList));
            printf("请输入线性表的长度:\n");
            scanf("%d",&length);
            InitList(L,length);
            printf("请依次输入线性表的 %d 个值:\n",length);
            for(i=0;i<length;i++)
   
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值