线性表顺序存储结构和链式存储结构

#include <stdio.h>
#include <iostream>
#include <malloc.h>
#define Max 10
using namespace std;
typedef struct{
    char data[Max];
    int length;
}sqlist;

void initlist(sqlist *&l)   //线性表初始化*&代表可以对l的地址改变 
{
    l=(sqlist *)malloc(sizeof(sqlist));
    l->length=0;
} 

void easyinsert(sqlist *l)
{
    char c=getchar();
    if(l->length>Max)
    {
        return ;
    }

    l->data[l->length++]=c;
}

void display(sqlist l)
{
    for(int i=0;i<l.length;i++)
    {
        cout<<l.data[i];
    }
    cout<<endl;
}
int leng(sqlist l)
{
    cout<<l.length<<endl;
    return l.length;
}
void getelem(sqlist l,int n)
{
    if(n<1||n>l.length)
    {
        return ;
    }
    char e;
    e=l.data[n-1];
    cout<<e<<endl;
}
void weizhi(sqlist l,char c)
{
    for(int i=0;i<l.length;i++)
    {
        if(c==l.data[i])
        {
            cout<<i+1<<"\n";
        }
    }
}
void charu(sqlist *l,char c,int n)
{
    if(n<1||n>l->length)
    {
        return ;
    }
    l->length++;
    int i;
    for(i=l->length;i>n;i--)
    {
        l->data[i-1]=l->data[i-2];
    }
    l->data[i-1]=c;
    
}
void shanchu(sqlist *l,int i)
{
    if(i<1||i>l->length)
    {
        return ;
    }
    l->length--;
    for(int j=i-1;j<l->length;j++)
    {
        l->data[j]=l->data[j+1];
    }
}

int main()
{
    sqlist *l;
    initlist(l);
    easyinsert(l);
    easyinsert(l);
    easyinsert(l);
    easyinsert(l);
    easyinsert(l);
    display(*l);
    leng(*l);
    getelem(*l,4);
    weizhi(*l,'c');
    charu(l,'g',5);
    display(*l);
    shanchu(l,3);
    display(*l);
}

初始化必须用*&l,其余如果对于线性表有改变则调用指针

原因:https://www.cnblogs.com/xiang-little/p/5840809.html

void initlist(sqlist *&l)   //线性表初始化*&代表可以对l的地址改变 
{
    l=(sqlist *)malloc(sizeof(sqlist));
    l->length=0;
} 

猜你喜欢

转载自www.cnblogs.com/BananaMan/p/11443910.html