qq_35263159
2016-09-29 11:59
采纳率: 100%
浏览 1.2k
已采纳

c++ 数据结构 单链表问题

给定一个带表头结点的单链表,设first为头指针,试写出算法:按递增次序输出单链表中各结点的数据元素,并释放结点所占的存储空间。(要求:不允许使用数组作辅助空间)。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 凝视深空 2016-09-29 15:11
    已采纳

    #include
    using namespace std;

    typedef struct node
    {
    int data;
    struct node *next;
    }list;

    void swap(int *a,int *b)
    {
    int t=*a;
    *a=*b;
    *b=t;
    }

    void cre(list *head)
    {
    cout<<"创建链表(-1结束)\n";
    list *p,*q;
    p=head;
    while(1)
    {
    q=new list;
    cin>>q->data;
    if(q->data==-1)
    {
    q=NULL;
    p->next=q;
    break;
    }
    else
    p->next=q;
    p=q;
    }
    cout<<endl;
    }

    void Sort(list *head)
    {
    cout<<"排序开始!\n\n";
    list *p,*q,*r;
    r=head->next;
    for(p=r;p->next!=NULL;p=p->next)
    for(q=p->next;q!=NULL;q=q->next)
    if(p->data>q->data)
    swap(&q->data,&p->data);
    cout<<endl;
    }

    void disp(list *head)
    {
    cout<<"开始显示链表!\n\n";
    list *p;
    p=head->next;
    while(p)
    {
    cout<data<<" ";
    p=p->next;
    }
    cout<<endl;
    }

    void del(list *head)
    {
    cout<<"开始删除结点空间!\n";
    list *p,*q;
    p=head;
    while(p)
    {
    q=p->next;
    delete p;
    p=q;
    }
    cout<<"删除成功!\n";
    }

    int main(void)
    {
    list *head;
    head=new list;
    cre(head);
    disp(head);
    Sort(head);
    disp(head);
    del(head);
    return 0;
    }

    点赞 评论
  • 凝视深空 2016-09-29 15:14

    图片说明

    点赞 评论

相关推荐 更多相似问题