线性表的相关操作

#include 
#include 

#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;

}

你可能感兴趣的:(线性表的相关操作)