线性表的相关操作

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 100
typedef int DataType;
struct SqList {
    int Data[MAXSIZE];
    int last;//指针,保存线性数组中最后一个元素的位置
} List;

typedef struct SqList * pList;

//初始化线性表,返回线性表的头指针
pList initSqList()
{
    pList plist;
    plist = (pList)malloc(sizeof(struct SqList));
    plist->last = -1;
    return plist;
}

//查找元素函数,返回元素

DataType findElement(DataType x,pList list)
{
    int i = 0;
    while(i <= list->last && list->Data[i] != x)
    {
        i++;
    }
    if(i > list->last){
        return -1;//说明没有找到x
    }
    else
    {
        return i;
    }
}

//插入元素

void insertElement(DataType x,int i,pList list)
{
    int j;
    if(list->last == MAXSIZE-1)
    {
        printf("线性表空间已满");
        return;
    }
    if(i < 0 || i > list->last+1)
    {
        printf("插入的位置不对");
        return;
    }
    for (int j = list->last+1; j >= i ; --j)
    {
        list->Data[j+1] = list->Data[j];
        
    }
    list->Data[i] = x;
    list->last++;

}
//删除元素,按下标删除
void deleteElement(int i,pList list)
{
    int j;
    if(i < 0 || list->last < i)
    {
        printf("不存在第%d个元素",i);
        return;
    }
    for (int j = i; j <=list->last; ++j) {
        list->Data[j] = list->Data[j+1];
    }
    list->last--;
    return;
}
//遍历输出线性表函数
void printList(pList list)
{
    int len = list->last;
    for(int i = 0;i <= len;i++)
    {
        printf("%d\t",list->Data[i]);
    }
    printf("\n");
}

//主函数

int main(void)
{
    pList list;
    list = initSqList();
    //键盘键入字符,想list线性表插入元素
    printf("插入线性表,按回车结束:\n");
    int element;
    int i = 0;
    while(1)
    {

        scanf("%d",&element);
        insertElement(element,i,list);
        i++;
        if(getchar() == '\n')
        {
            break;
        }

    }
//    for (int i = 0; i < 10; ++i) {
//        insertElement(i,i,list);
//    }
    printList(list);
    return 0;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 正文之前 不管怎么说,好歹是吧王道的第二章看完了!线性表算法写的我都快吐了,不过成果也是有的,可以写一些稍微复杂的...
    张照博阅读 606评论 4 9
  • Overview Apache RocketMQ是一个具有低延迟、高性能和可靠性、万亿级容量和灵活可伸缩性的分布式...
    Kohler阅读 1,057评论 1 0
  • 前同事给我发来微信,问我之前单位统一购买(自己掏钱)的保温杯还要不要,领导要清理杯子了,无人认领的杯子将被扔掉。 ...
    维多and利亚阅读 636评论 6 6
  • 两天的新晋导师特训营结束了。这次学习带给我满满的能量和感动。以前有所了解的宇宙法则这次在课堂上又进一步得到了印证。...
    璐萌爸爸阅读 144评论 0 0