您的位置:首页 > 其它

50.单项链表逆置

2015-06-05 10:33 113 查看
#include<stdio.h>
#include<stdlib.h>
#define N 5
typedef struct node
{
int date;
struct node *next;

}NODE;

NODE *fun(NODE *h)
{
NODE *p, *q, *r;
p = h;
if (p == NULL)
return NULL;
q = p->next;
p->next = NULL;

while (q!= NULL)
{
r = q->next;
q->next = p;
p = q;
q = r;
}
return p;
}

NODE *creatlist(int a[])
{

NODE *h, *p, *q;
int i;

for (i = 0;i < N;i++)
printf("%d ", a[i]);

h =p=q= NULL;
for (i = 0;i < N;i++)
{
q = (NODE*)malloc(sizeof(NODE));
q->date = a[i];
q->next = NULL;
if (h == NULL) h = p = q;
else
{
p->next = q;
p = q;

}

}
return h;
}

void outlist(NODE *h)
{
NODE *p;
p = h;
if (h = NULL) printf("The list if NULL!\n");
else
{
printf("\nHead ");
do
{
printf("->%d", p->date);
p = p->next;

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

}
getchar();
}

int main()
{
NODE *head;
int a
= { 2,4,6,8,10 };
head = creatlist(a);
printf("\nThe original list:\n");
outlist(head);
head = fun(head);
printf("\n The list after inverting:\n");
outlist(head);
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: