#include <stdio.h>
#include <stdlib.h>
struct node
{
int num;
char name[20];
struct node *next;
};
typedef struct node Node;
typedef struct node *Link;
void create_link(Link *head)
{
*head = NULL;
}
void insert_link(Link *head,Link new_node,int num) //插入第n个结点,值为num
{
if(*head == NULL)
{
*head = new_node;
new_node->next = NULL;
}
else
{
Link p = *head;
Link q = *head;
if(num < (*head)->num) //头插
{
new_node->next = *head;
*head = new_node;
}
else
{
while(q != NULL && num > q->num)
{
p = q;
q = q->next;
}
if(q == NULL) //尾插
{
p->next = new_node;
new_node->next = NULL;
}
else // 中间插
{
new_node->next = q;
p->next = new_node;
}
}
}
}
void display_link(Link head,Link new_node)
{
new_node = head;
if(new_node == NULL)
{
printf("Empty!\n");
return;
}
else
{
while(new_node != NULL)
{
printf("num = %d name = %s\n",new_node->num,new_node->name);
new_node = new_node->next;
}
}
}
void release_link(Link *head,Link new_node)
{
while(*head != NULL)
{
new_node = *head;
*head = (*head)->next;
free(new_node);
}
}
int main()
{
int num;
int i,n;
Link head = NULL;
Link new_node = NULL;
create_link(&head);
printf("Please input the number(node number) :\n"); //输入链表长度
scanf("%d",&n);
for(i = 1;i <= n;i++)
{
new_node = (Link)malloc(sizeof(Node));
if(new_node ==NULL)
{
printf("malloc error!\n");
exit(-1);
}
printf("Please input num and name:\n");
scanf("%d",&num);
new_node->num = num;
scanf("%s",new_node->name);
insert_link(&head,new_node,num);
}
display_link(head,new_node);
printf("Now release it:\n");
release_link(&head,new_node);
display_link(head,new_node);
return 0;
}
#include <stdlib.h>
struct node
{
int num;
char name[20];
struct node *next;
};
typedef struct node Node;
typedef struct node *Link;
void create_link(Link *head)
{
*head = NULL;
}
void insert_link(Link *head,Link new_node,int num) //插入第n个结点,值为num
{
if(*head == NULL)
{
*head = new_node;
new_node->next = NULL;
}
else
{
Link p = *head;
Link q = *head;
if(num < (*head)->num) //头插
{
new_node->next = *head;
*head = new_node;
}
else
{
while(q != NULL && num > q->num)
{
p = q;
q = q->next;
}
if(q == NULL) //尾插
{
p->next = new_node;
new_node->next = NULL;
}
else // 中间插
{
new_node->next = q;
p->next = new_node;
}
}
}
}
void display_link(Link head,Link new_node)
{
new_node = head;
if(new_node == NULL)
{
printf("Empty!\n");
return;
}
else
{
while(new_node != NULL)
{
printf("num = %d name = %s\n",new_node->num,new_node->name);
new_node = new_node->next;
}
}
}
void release_link(Link *head,Link new_node)
{
while(*head != NULL)
{
new_node = *head;
*head = (*head)->next;
free(new_node);
}
}
int main()
{
int num;
int i,n;
Link head = NULL;
Link new_node = NULL;
create_link(&head);
printf("Please input the number(node number) :\n"); //输入链表长度
scanf("%d",&n);
for(i = 1;i <= n;i++)
{
new_node = (Link)malloc(sizeof(Node));
if(new_node ==NULL)
{
printf("malloc error!\n");
exit(-1);
}
printf("Please input num and name:\n");
scanf("%d",&num);
new_node->num = num;
scanf("%s",new_node->name);
insert_link(&head,new_node,num);
}
display_link(head,new_node);
printf("Now release it:\n");
release_link(&head,new_node);
display_link(head,new_node);
return 0;
}