单链表的逆置
#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode
{
int data;
struct Lnode *next;
}list;
void create(list *&L, int a[],int n)
{
list *s, *r;//尾插法建表
int i;
L = (list*)malloc(sizeof(list));
r = L;
for (i = 0; i < n; i++)
{
s = (list*)malloc(sizeof(list));
s->data = a[i];
r->next = s;
r = s;
}
r->next = NULL;
}
void reverse(list *&L)//单链表逆置
{
list *p = L->next, *q;//利用类似头插法建立单链表的方法进行逆置
L->next = NULL;
while (p != NULL)
{
q = p->next;
p->next = L->next;
L->next = p;
p = q;
}
}
void print(list *L)//打印单链表
{
list *p = L->next;
while (p!=NULL)
{
printf("%d ", p->data);
p = p->next;
}
}
int main()
{
int n,a[100],i;
scanf_s("%d", &n);
for (i = 0; i < n; i++)
{
scanf_s("%d", &a[i]);
}
list *L;
create(L,a,n);
reverse(L);
print(L);
}
编程小白一枚,如有更好的代码还请各位指教。