设计一算法,逆置带头结点的动态单链表L

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#include

typedef int datatype;

typedef struct node

{

datatype data;

struct node *next;

}linklist;

linklist *creatlistr()

{

// datatype elem;

int n;

linklist *head,*s,*r;

head=(linklist *)malloc(sizeof(linklist));

r=head;

printf("请输入要插入的结点的个数:");

scanf("%d",&n);

printf("请输入%d个结点:",n);

while(n--)

{

s=(linklist *)malloc(sizeof(linklist));

scanf("%d",&s->data);

r->next=s;

r=s;

}

r->next=NULL;

return head;

}

void reverseLinklist(linklist *head)

{

linklist *y,*r,*t;

t=NULL;

r=NULL;

y=head->next;

head->next=NULL; //断开头指针

while(y!=NULL) //从第一个结点起,将后边的结点依次放到最前边,实现逆置{

t=y->next;

y->next=r;

r=y;

y=t;

}

head->next=r; //重新链接上头结点,保证最初链的完整

void show(linklist *head)

{

linklist *p;

p=head->next;

while(p!=NULL)

{

printf("%4d",p->data);

p=p->next;

}

}

int main()

{

linklist *head;

head=creatlistr();

reverseLinklist(head);

show(head);

printf("\n");

system("pause");

return 0;

}

经过codeblocks验证,完美运行。

适用于数据结构2.6 习题

更多数据结构————adam

相关文档
最新文档