c语言双链表的基本算法,c语言实现基本的数据结构(二) 链表(包括链表的三种简单排序算法)...

这篇博客详细介绍了如何使用C++实现链表的基本操作,包括创建节点、销毁链表、在链表尾部添加节点、在指定位置插入节点、删除节点以及获取链表长度。此外,还讨论了三种排序算法(选择排序、插入排序和冒泡排序)在链表中的应用。这些基础知识对于理解和操作链表至关重要。
摘要由CSDN通过智能技术生成

#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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值