大作业水平...
#include<stdio.h>
#include<stdlib.h>
struct node{
struct node* next;
int c;
};
struct node* init_node(int input)
{
struct node* p;
p = malloc(sizeof(struct node));
p->c = input;
return p;
}
void insert_node(struct node *head, int new)
{
struct node *temp = (struct node*)(malloc(sizeof(struct node)));
// struct node *temp;
while(head->next != NULL)
head = head->next;
head->next = temp;
temp->c = new;
temp->next = NULL;
}
void display_list(struct node* head){
if(head == NULL)
{
printf("error.\n");
return;
}
struct node *p = head;
while(p->next != NULL)
{
printf("%d ",p->c);
p = p->next;
}
printf("%d ", p->c);
printf("NULL\n");
}
void destroy_list(struct node *head)
{
if (NULL != head) {
destroy_list(head->next);
// free(head->c);
free(head);
printf("destroy a list...\n");
}
}
struct node* copy_list(struct node* head)
{
struct node* p = (struct node*)(malloc(sizeof(struct node)));
p->next = NULL;
if(head == NULL)
{
printf("head is NULL.\n");
return;
}
p->c = head->c;
head = head->next;
while(head != NULL)
{
printf("copying... head->c: %d\n", head->c);
insert_node(p, head->c);
head = head->next;
}
// insert_node(p, head->c);
return p;
}
struct node* reverse_list(struct node* head)
{
struct node* p;
struct node* t;
p = (struct node*)(malloc(sizeof(struct node)));
p->c = head->c;
p->next = NULL;
while(head->next != NULL)
{
head = head->next;
t = p;
p = (struct node*)(malloc(sizeof(struct node)));
p->next = t;
p->c = head->c;
}
return p;
}
int main(int argc, char** argv)
{
struct node *head = init_node(1);
long long i;
insert_node(head, 2);
insert_node(head, 3);
insert_node(head, 4);
insert_node(head, 5);
insert_node(head, 6);
insert_node(head, 7);
display_list(head);
struct node* copy = copy_list(head);
printf("copy done.\n");
struct node* reve = reverse_list(head);
display_list(reve);
for (i = 0; i < 0x1000000; i++) reve = reverse_list(head);
display_list(reve);
display_list(copy);
destroy_list(head);
destroy_list(copy);
return 0;
}