#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define TYPE int
//设计链表节点
typedef struct Node
{
TYPE data;
struct Node* next;
}Node;
//创建节点
Node* create_node(TYPE data)
{
Node* node=malloc(sizeof(Node));
node->data=rand()%100;
node->next=NULL;
}
//设计链表结构
typedef struct List
{
Node* head;
Node* tail;
size_t size;
}List;
//创建链表
List* create_list(void)
{
List* list=malloc(sizeof(List));
list->head=NULL;
list->tail=NULL;
return list;
}
//销毁链表
void destory_list(List* list);
//头部添加
void add_head(List* list,TYPE data)
{
Node* node=create_node(data);
if(list->size0)
{
list->head=node;
list->tail=node;
}
else
{
node->next=list->head;
list->head=node;
}
list->size++;
}
//尾部添加
void add_tail(List* list,TYPE data)
{
Node* node=create_node(data);
if(list->size0)
{
list->head=node;
list->tail=node;
}
else
{
list->tail->next=node;
list->tail=node;
}
list->size++;
}
//指定位置添加
bool add_index_list(List* list,int index,TYPE data)
{
if(index<0||index>=list->size) return false;
if(0index)
{
add_head(list,data);
}
else
{
Node* prev =list->head;
Node* node=create_node(data);
for(int i=0;i<index;i++)
{
prev =prev->next;
}
node->next=prev->next;
prev->next=node;
list->size++;
}
return true;
}
//头删除
bool del_head_list(List* list)
{
if(list->size0) return false;
Node* node=list->head;
if(list->size1)
{
node =list->head;
list->head=NULL;
list->tail=NULL;
}
else
{
list->head=node->next;
}
free(node);
list->size–;
return true;
}
//尾删除
bool del_tail_list(List* list)
{
if(list->size0) return false;
Node* node=list->tail;
if(list->size1)
{
list->head=NULL;
list->tail=NULL;
}
else
{
for(node=list->head;list->tail!=node->next;node=node->next);
list->tail=node;
list->tail->next=NULL;
node=node->next;
}
free(node);
list->size–;
return true;
}
//指定位置删除
bool del_index_list(List* list,int index,TYPE data)
{
if(index<0||index>=list->size) return false;
if(0index)
del_head_list(list);
if(list->size-1==index)
return del_tail_list(list);
Node* prev=list->head;
for(int i=0;i<index-1;i++)
{
prev=prev->next;
}
Node* node=prev->next;
prev->next=node->next;
free(node);
list->size--;
return true;
}
//遍历
void show_list(List* list)
{
for(Node* node=list->head;NULL!=node;node=node->next)
{
printf("%d “,node->data);
}
printf(”\n");
}
/排序
Node sort_node(Node* node)
{
if(NULL==list) return list;
Node *temp=NULL;
}/
int main()
{
List list=create_list();
Node* node=list->head;
for(int i=0;i<10;i++)
{
add_tail(list,i);
}
sort_list(list);
show_list(list);
}