数据结构实验,线性表的顺序存储结构的实现

编写完成下列功能的函数:(1)初始化一个线性表;(2)创建一个包含15个不大于100的正整数值得线性表;(3)将一个数x插在第i个元素前(x和i在程序运行时输入);(4)删除第i个元素(i在程序运行时输入),应在删除结束后输出删除元素的值;(5)输出线性表中所有的元素。
先提前谢谢大神了!

C++代码编写的

#include<iostream>
#include<string>
using namespace std;
typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
} LinkList;
void CreatListR(LinkList *&L,ElemType a[],int n)
{
    LinkList *s,*r;
    int i;
    //L=(LinkList *)malloc(sizeof(LinkList));
    L=new LinkList();
    r=L;
    for(i=0;i<n;i++)
    {
        //s=(LinkList *)malloc(sizeof(LinkList));
        s=new LinkList();
        s->data=a[i];
        r->next=s;
        r=s;
    }
    r->next=NULL;
}
void DispList(LinkList *L)
{
    LinkList *p=L->next;
    while(p!=NULL)
    {
        cout<<p->data<<" ";
        p=p->next;
    }
    cout<<endl;
}
int ListInsert(LinkList *&L,int i,ElemType e)
{
    int j=0;
    LinkList *p=L,*s;
    while(j<i-1&&p!=NULL)
    {
        j++;
        p=p->next;
    }
    if(p==NULL)
        return 0;
    else
    {
        s=new LinkList();
        s->data=e;
        s->next=p->next;
        p->next=s;
        return 1;
    }
}
int ListDelete(LinkList *&L,int i)
{
    int j=0;
    LinkList *p=L,*q;
    while(j<i-1&&p!=NULL)
    {
        j++;
        p=p->next;
    }
    if(p==NULL)
    {
        return 0;
    }
    else 
    {
        q=p->next;
        if(q==NULL)
        {
            return 0;
        }
        p->next=q->next;
        int a=q->data;
        free(q);
        return a;
    }
}
int main()
{
    LinkList *L,*L1;
    int a[]={1,5,7,9,12,18,19,20,30,43,45,56,41,42,78};
    int n=15,i,x,y,j;
    CreatListR(L,a,n);
    DispList(L);
    cout<<"请输入i"<<endl;
    cin>>i;
    cout<<"请输入x"<<endl;
    cin>>x;
    ListInsert(L,i,x);
    DispList(L);
    cout<<"请输入j"<<endl;
    cin>>j;
    y=ListDelete(L,j);
    DispList(L);
    cout<<y<<endl;
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答