#include "stdafx.h"#include
//创建一个节点,data为value,指向NULL
Node* Create(intvalue){
Node* head = (Node*)malloc(sizeof(Node));
head->data =value;
head->next =NULL;returnhead;
}//销毁链表
bool Destroy_List(Node*head){
Node*temp;while(head){
temp= head->next;free(head);
head=temp;
}
head=NULL;return true;
}//表后添加一个节点,Create(value)
bool Append(Node* head,intvalue){
Node* n =Create(value);
Node* temp =head;while (temp->next){
temp= temp->next;
}
temp->next =n;return 0;
}//打印链表
void Print_List(Node*head){
Node* temp = head->next;while(temp){
printf("%d->", temp->data);
temp= temp->next;
}
printf("\n");
}//在链表的第locate个节点后(头节点为0)插入创建的节点Create(value)
bool Insert_List(Node* head, int locate, intvalue){
Node* temp =head;
Node*p;
Node* n =Create(value);if (locate < 0)return false;while (locate--){if (temp->next ==NULL){
temp->next =Create(value);return true;
}
temp= temp->next;
}
p= temp->next;
temp->next =n;
n->next =p;return true;
}//删除第locate个节点后(头节点为0)的节点
bool Delete_List(Node* head, intlocate){
Node* temp =head;
Node*p;if (locate < 0)return false;while (locate--){if (temp ==NULL){return false;
}
temp= temp->next;
}
p= temp->next->next;free(temp->next);
temp->next =NULL;
temp->next =p;return true;
}//获取链表长度(不包括头节点)
int Size_List(Node*head){
Node* temp =head;int size = 0;while (temp->next){
temp= temp->next;
size++;
}returnsize;
}//链表的三种排序(选择,插入,冒泡)
bool Sort_List(Node*head){int t = 0;int size =Size_List(head);//选择排序
/*for (Node* temp = head->next; temp != NULL; temp = temp->next){
for (Node* p = temp; p != NULL; p = p->next){
if (temp->data > p->data){
printf("换%d和%d\n", temp->data, p->data);
t = temp->data;
temp->data = p->data;
p->data = t;
}
}
}*/
//插入排序
/*for (Node* temp = head->next->next; temp != NULL; temp = temp->next){
for (Node* p = head; p->next != NULL; p = p->next){
if (p->next->data > temp->data)
{
printf("换%d和%d\n", temp->data, p->next->data);
t = temp->data;
temp->data = p->next->data;
p->next->data = t;
}
}
}*/
//冒泡排序
for (Node* temp = head->next; temp->next != NULL; temp = temp->next){for (Node* p = head->next; p->next != NULL; p = p->next){if (p->data > p->next->data){
t= p->data;
p->data = p->next->data;
p->next->data =t;
}
}
}return 0;
}