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

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

2个回答

#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;
}

图片说明

立即提问
相关内容推荐