数据结果,线性表的逆置

来源:百度知道 编辑:UC知道 时间:2024/06/14 10:58:01
设有一个线性表 ,试分别在顺序表和单链表两种存储表示方式下,各设计一个将线性表 逆置的算法,要求不重新开辟存储空间。所谓逆置是指将线性表中的元素次序颠倒过来,即成为 。
解:(1)单链表
#include "stdio.h"
typedef int elemtype;
typedef struct node
{elemtype data;
struct node*next;
}linklist;
linklist *creatlinklist() /* 建立带表头的链表 */
{int x;
linklist *head,*r,*p;
head=( linklist *)malloc(sizeof(linklist));
head->next=NULL;
r=head;
scanf("%d",&x);
while(x!=-1)
{p=( linklist *)malloc(sizeof(linklist));
p->data=x;p->next=NULL;
r->next=p;
r=r->next;
scanf("%d",&x);}
return head;
}
void reverse(linklist *H)
{linklist *p,*q;
p=H->next;
H->next=NULL;
while(p!=NULL)
{q=p;
p=p->next;
q->next=H->next;
H->next=q;
}
}
void main()
{linklis

我没发现问题,我运行你的程序,我认为结果是正确的,能够完成逆转。

运行的时候,程序现实一串英文:
please input the data:

这时候你可以输入一些数字,直到-1结束。由于你的程序最后输出结果的时候没有家分隔符号,建议你输入一位数字,例如:
1 2 3 4 5 6 7 8 -1

回车之后,程序完成逆转,并且现实逆转后的结果:
87654321

你是不是一回车程序又回来了?其实程序是正确输出了结果的,可以选择菜单查看屏幕,或者再次运行查看结果,或者在main()的最后添加一个语句getchar()暂停屏幕。

把线性表倒过来就行了