这是一个将链表翻转的程序,但运行结果只有翻转前的,没有翻转后的,麻烦大神们帮我看看,谢谢了
#include<stdio.h>
#include<malloc.h>
typedef struct Node {
int data;
struct Node*next;
}Link;
Link*create(n) //创建链表;
{
Link*p, *q, *head;
int i = 1;
p = (Link*)malloc(sizeof(Link));
head = p;
p->data = i;
for (i = 2; i <= n; i++)
{
q = (Link*)malloc(sizeof(Link));
q->data = i;
p->next = q;
p = q;
}
return head;
}
void show(Link*head) //打印链表;
{
Link*p;
p = head;
while(p!=NULL)
{
printf("%d\n", p->data);
p = p->next;
}
}
void converse(Link *head) //对链表进行翻转;
{
Link*i, *j, *k;
i = NULL;
j = head->next;
k = j->next;
if (j == NULL || k == NULL) return;
while (k) //当K不为空时,循环
{
j->next = i; //将j指向前面的i;
i = j;
j = k;
k = k->next; //将i,j,k依次向后移动一步;
}
j->next = i; //将最后一个结点指向倒数第二个;
head->next = j; //将头结点指向最后一个结点;
}
int main()
{
Link *head = create(7);
show(head);
converse(head);
show(head);
return 0;
}
#include<stdio.h>
#include<malloc.h>
typedef struct Node {
int data;
struct Node*next;
}Link;
Link*create(n) //创建链表;
{
Link*p, *q, *head;
int i = 1;
p = (Link*)malloc(sizeof(Link));
head = p;
p->data = i;
for (i = 2; i <= n; i++)
{
q = (Link*)malloc(sizeof(Link));
q->data = i;
p->next = q;
p = q;
}
return head;
}
void show(Link*head) //打印链表;
{
Link*p;
p = head;
while(p!=NULL)
{
printf("%d\n", p->data);
p = p->next;
}
}
void converse(Link *head) //对链表进行翻转;
{
Link*i, *j, *k;
i = NULL;
j = head->next;
k = j->next;
if (j == NULL || k == NULL) return;
while (k) //当K不为空时,循环
{
j->next = i; //将j指向前面的i;
i = j;
j = k;
k = k->next; //将i,j,k依次向后移动一步;
}
j->next = i; //将最后一个结点指向倒数第二个;
head->next = j; //将头结点指向最后一个结点;
}
int main()
{
Link *head = create(7);
show(head);
converse(head);
show(head);
return 0;
}