#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
}linklist;
linklist*createlinkedlist(int a[],int n){ //用数组输入值
linklist *head,*p,*t;
head=t=(linklist*)malloc(sizeof(linklist));
int i=0;
for(i=0;i<n;i++){
p=(linklist*)malloc(sizeof(linklist));
p->data=a[i];
t->next=p;
t=p;
}
p->next=NULL;
return head;
}
void print(linklist*head){ //按顺序输出链表中各个节点的数据
linklist *p;
p=head;
while(p->next!=NULL){
p=p->next;
printf("%d ",p->data );
}
}
List* reverselinklist(List*head){ //链表反转操作
linklist *p,*q,*r;
/*建立的链表是有头节点的,故结构为0-1-2-3-4-5(其中0代表头节点,不保存数据)
之后结构依次为0-2-1-3-4-5
0-3-2-1-4-5
0-4-3-2-1-5
0-5-4-3-2-1
*/
p=head->next;
q=p->next;
r=p ;
while(p->next!=NULL){
p->next =q->next;
q->next =r;
r=q;
head->next=q;
q=p->next;
}
return head;
}
int main(int argc, char *argv[]) {
int a[5]={1,5,3,9,11};
linklist*head;
head=createlinkedlist(a,5);
// print(head);
reverselinklist(head);
print(head);
return 0;
}
单链表建立及翻转
最新推荐文章于 2023-03-30 14:46:00 发布