C语言——单链表逆转的三种方式,两种交换结点值的排序

    技术2024-03-25  87

    在这里插 #include<stdio.h> #include<stdlib.h> typedef struct list { int data; struct list *next; }*linklist,lnode; create(linklist head) { linklist p,q; p=head; int i; printf("不为-1\n"); scanf("%d",&i); while(i!=-1) { q=(linklist)malloc(sizeof(lnode)); q->data=i; q->next=NULL; p->next=q; p=q; scanf("%d",&i); } } void print(linklist p) { linklist head; head=p->next; while(head) { printf("%d ",head->data); head=head->next; } } void turn(linklist head) { linklist pre,cur,tmp; pre=head->next; cur=pre->next; tmp=NULL; while(cur!=NULL) { tmp=cur->next; cur->next=pre; pre=cur; cur=tmp; } head->next->next=NULL; head->next=pre; } void turn1(linklist head) { linklist p,q=NULL; p=head->next; while(p->next) { q=p->next; p->next=q->next; q->next=p; head->next=q; } } void sort(linklist head) { int temp; linklist p,q; p=head->next; q=head; int i,j; while(p!=NULL) { while(p->next!=NULL) { if(p->data > p->next->data) { temp=p->data; p->data=p->next->data; p->next->data=temp; } p=p->next; } p=q->next; q=p; } } void sort1(linklist head) { linklist p,q; p=NULL; q=NULL; int temp; for(p=head->next;p->next!=NULL;p=p->next) { for(q=p->next;q!=NULL;q=q->next) { if(p->data > q->data) { temp=p->data; p->data=q->data; q->data=temp; } } } } void turn2(linklist head) { linklist old,new_head,temp,p; old=head->next; new_head=NULL; while(old) { temp=old->next; old->next=new_head; new_head=old; old=temp; } head->next=new_head; } int main() { linklist p=(linklist)malloc(sizeof(lnode)); p->next=NULL; create(p); print(p); printf("\n"); sort1(p); //sort(p); print(p); printf("\n"); turn2(p); //turn1(p); //turn(p); print(p); return 0; }入代码片
    Processed: 0.012, SQL: 9