您的位置:首页 > 其它

43.单项链表逆置

2015-06-06 13:12 232 查看
给定程序中,函数fun的功能是将带头结点的单项链表逆置。

#include<stdio.h>
#include<stdlib.h>
#define N 5
typedef struct node
{
int data;
struct node *next;

}NODE;
void fun(NODE *h)
{
NODE *p, *q, *r;
p = h->next;
if (p ==0) {
printf("\nzai\n"); return;
}
q = p->next;
p->next = NULL;
while (q)
{
r = q->next;
q->next = p;
p = q;
q = r;

}
h->next = p;
printf("\n%d\n", h->data);
}

NODE *creatlist(int a[])
{
NODE *h, *p, *q;
h = p = q = NULL;
int i;
h = (NODE*)malloc(sizeof(NODE));
h->next = NULL;
for (i = 0;i < N;i++)
{
q = (NODE*)malloc(sizeof(NODE));
q->data = a[i];
q->next = NULL;
if (h->next == NULL)
h->next = p = q;
else
{
p->next = q;
p = q;
}
}
return h;
}
void outlist(NODE *h)
{
NODE *p;
p = h->next;
if (p == NULL)
printf("The list is NULL:\n");
else
{
printf("\nHead  ");
do
{
printf("->%d", p->data);
p = p->next;

} while (p != NULL);
printf("->End\n");
}
}

int main()
{
NODE *head;
int a
= { 2,4,6,8,10 };
head = creatlist(a);
printf("\nThe original list:\n");
outlist(head);
fun(head);
printf("\nThe list after inverting:\n ");
outlist(head);
getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: