qq_35263159
qq_35263159
采纳率100%
2016-09-29 12:04

c++数据结构 单链表问题 求大神解答

已采纳

给定一个顺序表,请写出一个将顺序表就地逆置的算法(就地逆置表示不允许用额外的存储单元来辅助数据之间的移动)。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • haihuanjack 对方感受到 5年前

    额外的指针肯定允许吧,要不然怎么弄呢?

    点赞 评论 复制链接分享
  • coder_lj 凝视深空 5年前

    #include
    using namespace std;

    #define listsize 100

    typedef struct
    {
    int data[listsize];
    int length;
    }list;

    /*void swap(int a,int *b)
    {
    int t=*a;
    *a=*b;
    *b=t;
    }
    /
    void swap(int *a, int *b)
    {
    *a = *a ^ *b;
    *b = *b ^ *a;
    *a = *a ^ *b;
    }
    void cre(list *l,int n)
    {
    int i;
    cout<<"输入顺序表元素:\n";
    for(i=0;i cin>>l->data[i];
    l->length=n;
    }

    void printlist(list *l,int n)
    {
    int i;
    cout<<"顺序表为:\n";
    for(i=0;i coutdata[i]<<" ";
    cout<<endl;
    }

    void Invert(list *l,int n)
    {
    cout<<"开始逆置!\n";
    int i;
    for(i=0;i swap(&l->data[i],&l->data[n-i-1]);
    printlist(l,n);
    cout<<"逆置成功!\n";
    }

    int main(void)
    {
    list l;
    cout<<"输入顺序表长度:\n";
    cin>>l.length;
    int n=l.length;
    cre(&l,n);
    printlist(&l,n);
    Invert(&l,n);
    return 0;
    }

    
    
    点赞 评论 复制链接分享