美文网首页
线性表的相关操作

线性表的相关操作

作者: 陈智涛 | 来源:发表于2017-10-12 17:06 被阅读0次
#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;

}

相关文章

  • Java操作线性表

    首先定义线性表模型以及相关的操作 测试

  • 线性表的相关操作

    集合 --- 创建线性表 解散 --- 销毁线性表 长度 --- 得到线性表的长度 出列 --- 从线性表删除一个...

  • 线性表的相关操作

  • 基于C语言的顺序表实现

    一、线性表的主要操作 1)初始化——给线性表相关参数赋初值; 2)求长处——求线性表的元素个数; 3)取元素——取...

  • 数据结构-栈

    栈的特点 先进后出 栈的相关操作都是通过栈顶位置进行相关操作的 栈的接口抽象 栈可以通过线性表直接实现(链表、数组...

  • 第二章 线性表

    主要讨论线性结构 2.1 线性表的类型定义及基本操作 线性表的类型定义 线性表的基本操作

  • 二、栈和队列

    二、栈和队列 栈和队列都是线性结构,它们是操作受限的线性表,即它们的操作是线性表操作的子集。因此也可以用线性表在某...

  • 【数据结构】栈和队列之栈各种操作

    栈的定义 栈实际上也是线性表,只不过是一种特殊的线性表。其特殊性在于栈的基本操作是线性表操作的子集,他们的操作受限...

  • 数据结构知识点总结(更新ing)

    ⭐ 我的网站: www.mengyingjie.com ⭐ 1线性表 1.1线性表的基本操作 1.2线性表的顺序表...

  • 顺序存储结构的线性表

    线性表的顺序存储结构指的是用一段地址连续的存储单元依次存储线性表的数据元素。 取元素操作 插入操作 删除操作 顺序...

网友评论

      本文标题:线性表的相关操作

      本文链接:https://www.haomeiwen.com/subject/zmnnyxtx.html