一、结构体创建
typedef int DataType;
typedef struct Node{
DataType data;
struct Node *next;
}node;
二、链表的创建
node* create_list(node *head,DataType *datas,int length)
{
node *new_node,*ptr = head;
for(int i=0;i<length;i++)
{
new_node = (struct Node*)malloc(sizeof(node));
new_node->data = datas[i];
ptr->next = new_node;
ptr = ptr->next;
}
}
三、链表的基本操作
## 1.链表的输出
void shows(node *ptr)
{
ptr = ptr->next;
while(ptr)
{
printf("%d\t",ptr->data);
ptr = ptr->next;
}
printf("\n");
}
## 2.链表的转置
node* reverse(node *head)
{
node *ptr,*before,*after;
ptr = head;
before = after = (struct Node*)malloc(sizeof(node));
while(ptr)
{
before = after;
after = ptr;
ptr = ptr->next;
after->next = before;
}
return after;
}
## 3. 链表A和链表B连接
node* merge(node *A,node *B)
{
node *ptr = A;
while(ptr->next)
{
ptr = ptr->next;
}
ptr->next = B->next;
}
## 4. 链表交集,A = A∩B;
node* unique(node *A,node *B){
node *ptr1,*ptr2,*ptr3,*C,*new_node;
C = (struct Node*)malloc(sizeof(node));
ptr1 = A;
ptr3 = C;
while(ptr1)
{
ptr2 = B;
while(ptr2){
while(ptr1->data == ptr2->data){
new_node = (struct Node*)malloc(sizeof(node));
new_node->data = ptr1->data;
ptr3->next = new_node;
ptr3 = new_node;
break;
}
ptr2 = ptr2->next;
}
ptr1 = ptr1->next;
}
return C;
}