前言
个人小记
一、反转链表
代码如下:
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_LIST 10
typedef struct Node
{
int data;
struct Node* next;
}Node;
Node* init_Node(int val)
{
Node* node=(Node*)malloc(sizeof(Node));
node->data=val;
node->next=NULL;
return node;
}
Node* insert(Node* head,int pos,int val)
{
Node New_head;
New_head.next=head;
Node* p=&New_head;
for(int i=0;i<pos;i++)p=p->next;
Node* node=init_Node(val);
node->next=p->next;
p->next=node;
return New_head.next;
}
void clear_linklist(Node* head)
{
if(head==NULL)return ;
for(Node* p=head,*q;p;p=q)
{
q=p->next;
free(p);
}
head=NULL;
return ;
}
void print(Node* head)
{
Node* p=head;
while(p)
{
printf("%3d",p->data);
printf("->");
p=p->next;
}
printf("\n");
return ;
}
Node* reverlinklist(Node* head)
{
Node New_head;
New_head.next=NULL;
Node* p=head,*q;
while(p)
{
q=p->next;
p->next=New_head.next;
New_head.next=p;
p=q;
}
return New_head.next;
}
int main()
{
srand((unsigned)time(0));
Node* head=NULL;
for(int i=0;i<MAX_LIST;i++)
{
head=insert(head,i,rand()%100);
}
printf("原链表为:\n");
print(head);
head=reverlinklist(head);
printf("反转链表后为:\n");
print(head);
clear_linklist(head);
return 0;
}
二、运行结果
原链表为:
94-> 49-> 41-> 54-> 13-> 27-> 47-> 37-> 87-> 53->
反转链表后为:
53-> 87-> 37-> 47-> 27-> 13-> 54-> 41-> 49-> 94->