C语言实现线性表的基本操作详解

时间:2025-04-15 07:16:17

···

#include <>
#include <>
#define  MAXSIZE 100//线性表的最大长度 

typedef struct 
{
    int *elem;
    int  length;//线性表的当前长度 
    //int   maxlength;//线性表的最大长度 
}SqList;

SqList q;
int i,k;

//初始化函数

void initSqList(SqList& l)
{
    =(int*)malloc(sizeof(int)*MAXSIZE);
    =0; 
    
    printf("请输入你要插入线性表的元素个数:");
    int n;
    scanf("%d\n",&n);
    while(n<=0||n>MAXSIZE)
    {
        printf("元素个数不符合线性表的要求请重新输入:");
        scanf("%d\n",&n); 
     } 
     for(int i=0;i<n;i++)
    {
        scanf("%d",&[i]);
        ++;
    } 

void printSqList(SqList& l)
{
    for(int i=0;i<;i++)
    {
        
        printf("%d ",[i]);
    }
    printf("\n");
    
}


//查找函数 
void getelem(SqList& l,int i,int& e)
{
       e=[i-1];
}

//插入函数 
void insertSqList(SqList& l,int i,int e)
{
    for(int j=-1;j>=i-1;j--)
    {
        [j+1]=[j];
    }
    [i-1]=e;
    ++;    
    
}

//删除函数 
void deleteSqList(SqList& l,int i)
{
    for(int j=i;j<;j++)
    {
        [j-1]=[j];
    }
    --;
}


//判断表是否为空
int listempty(SqList& l)
{
    if(==0)
    {
        return 0;
    }
    else
    {
        return 1;
    }
 } 


void a()
{
    printf("输入你要查找的元素的位置:"); 
    int i,k;
    scanf("%d",&i);
    while(i>||i<=0)
    {
        
        printf("你输入的位置不合法请重新输入:");
        scanf("%d",&i);
    }
    getelem(q,i,k);
    printf("%d\n",k);
}

void b()
{
    printf("输入你要插入的位置:");
    scanf("%d",&i);
    while(i>+1||i<=0)
    {
        printf("你输入的位置不合法请重新输入:");
            scanf("%d",&i);
    } 
    printf("输入你要插入的元素:");
    scanf("%d",&k);
    insertSqList(q,i,k);
    printSqList(q);
}


void c()
{
    printf("请输入你要删除的元素的位置:"); 
    scanf("%d",&i);
    while(i<=0||i>)
    {
        printf("你输入的位置不合法请重新输入:");
        scanf("%d",&i);
    } 
    deleteSqList(q,i);
    printSqList(q);
}


void d()
{
        if(listempty(q))
    {
        printf("false\n");
    }
    else
    {
        printf("true\n");
    }
}


int main()
{
    initSqList(q);
    
    while(1)
    {
        printf("\n");
        printf("1查找\n");
        printf("2显示线性表元素\n");
        printf("3插入元素\n");
        printf("4删除元素\n");
        printf("5判断线性表是否为空\n");
        printf("选择功能序号:");
        int t;
        scanf("%d",&t);
        switch(t)
        {
            case 1:a();break;
            case 2:printSqList(q);break;
            case 3:b();break;
            case 4:c();break;
            case 5:d();break;
         } 
        
    }        
    return 0;
 } 

···