#include <stdio.h>
#include <stdlib.h>
#include "2.h"
Linklist* create_link(void)
{
Linklist* head=(Linklist*)malloc(sizeof(Linklist));
if(NULL == head)
{
printf("链接表创建失败\n");
return NULL;
}
head->txt.len=0;
head->next=NULL;
return head;
}
void Head_insertion(Linklist* head, dataType num)
{
Linklist* temp=(Linklist*)malloc(sizeof(Linklist));
if(NULL == temp)
{
printf("创建失败\n");
return;
}
temp->txt.data=num;
temp->next=head->next;
head->next=temp;
head->txt.len++;
return;
}
void Tail_insertion(Linklist* head, dataType num)
{
Linklist* temp=(Linklist*)malloc(sizeof(Linklist));
if(NULL == temp)
{
printf("创建失败\n");
return;
}
temp->txt.data=num;
temp->next=NULL;
Linklist* p=head;
while(p->next != NULL)
{
p=p->next;
}
p->next=temp;
temp->next=NULL;
head->txt.len++;
return;
}
void Header_deletion(Linklist* head)
{
if(NULL == head->next || NULL == head)
{
printf("链表为空删除失败\n");
return;
}
Linklist* temp=head->next;
head->next = temp->next;
dataType num = temp->txt.data;
free(temp);
head->txt.len--;
return;
}
void Tail_deletion(Linklist* head)
{
if(NULL == head->next || NULL == head)
{
printf("链表为空删除失败\n");
return;
}
Linklist* p=head;
while(p->next->next != NULL)
p=p->next;
Linklist* temp=p->next;
p->next = p->next->next;
dataType num = temp->txt.data;
free(temp);
temp=NULL;
head->txt.len--;
return;
}
void Position_insert(Linklist* head, int pos, dataType num)
{
if(pos < 1 || pos>head->txt.len+1)
{
printf("插入位置不合法\n");
return;
}
if(NULL == head)
{
printf("头结点为空\n");
return;
}
Linklist* temp = (Linklist*)malloc(sizeof(Linklist));
if(NULL == temp)
{
printf("创建结点失败\n");
return;
}
temp->txt.data = num;
temp->next = NULL;
Linklist* p = head;
for(int i=0; i<pos-1; i++)
{
p = p->next;
}
temp->next = p->next;
p->next = temp;
head->txt.len++;
return;
}
void Location_delete(Linklist* head, int pos)
{
if(pos<=0 || pos>head->txt.len)
{
printf("删除失败\n");
return;
}
if(NULL == head)
{
printf("头结点为空\n");
return;
}
Linklist* p = head;
for(int i=0; i<pos-1; i++)
{
p = p->next;
}
Linklist* temp = p->next;
dataType data = temp->txt.data;
p->next = temp->next;
free(temp);
temp = NULL;
head->txt.len--;
return;
}
void show_Linklist(Linklist* head)
{
Linklist* p=head;
while(p->next != NULL)
{
p=p->next;
printf("%d\t",p->txt.data);
}
printf("\n");
return;
}