单向链表:在插入值的同时要进行排序
2010-04-07 11:06
239 查看
//作用:完成由Node类型结点构成的一个单向链表的由小到大
程序思路:
1、在新建结点时要注意给next指针随时赋上Null值;
2、在整个程序中一定要把头结点保存起来;
3、第一次插入结点时只需给头结点赋值即可;
4、在之后插入值时需要注意插入的位置,分三种情况:头结点、中间结点、尾结点
程序思路:
1、在新建结点时要注意给next指针随时赋上Null值;
2、在整个程序中一定要把头结点保存起来;
3、第一次插入结点时只需给头结点赋值即可;
4、在之后插入值时需要注意插入的位置,分三种情况:头结点、中间结点、尾结点
struct Node { struct Node *next; int value; }; struct Node* InsertSort(void) { Node *nNew = NULL; Node *nHeard = NULL; for (int n = 0; n < 5; ++n) { nNew = new Node; if (NULL == nNew) { return NULL; } else { printf("请输入值:"); scanf("%d", &(nNew->value)); nNew->next = NULL;//注意此处随使用给赋值为NULL } if (nHeard == NULL)//第一次插入值只需给头结点赋值勤 { nHeard = nNew; continue; } if (nNew->value < nHeard ->value)//判断插入的值是不是头结点 { nNew->next = nHeard; nHeard = nNew; continue; } //根据头结点依次向后进行比较值 Node *nCur = nHeard; while (nNew->value > nCur->value) { if (nCur->next == NULL) { break; } nCur = nCur->next; } //判断插入的值是否是尾结点 if (nCur->next == NULL) { nCur->next = nNew; } else { nNew->next = nCur->next; nCur->next = nNew; } } return nHeard; } void print(struct Node* Head) { struct Node* nCur; nCur = Head; while(nCur!=NULL) { printf("当前值=%d/n",nCur->value); nCur = nCur->next; } } int main(int argc, char * argv[]) { struct Node* head; head=InsertSort(); print(head); system("pause"); return 0; }
相关文章推荐
- C语言单向动态链表程序,实现链表的建立,合并,重新排序,链表元素的插入与删除,以及根据元素成员的值进行元素删除。
- 用直接插入排序法对单链表进行排序
- [LeetCode] Insertion Sort List 单向链表插入排序
- 对给定链表进行插入排序。
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
- 对一个存储学生信息的单向链表,按照学号升序对链表进行排序,每个节点包含了一个学生ID
- 数据结构之单向链表操作1-(插入,删除,交换,反转,排序等操作)
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
- 链表2(插入结点的同时排序)
- 数据结构----单向链表之 新建-插入-删除-排序(选择法)-合并-删除-销毁
- 对链表数据进行插入排序
- 单链表节点插入并进行排序
- 对单链表进行 删除、插入、排序 等操作。
- 单向链表插入排序 Java
- 在一个环形的无重复元素的排序单向链表中插入一个元素
- 面试中常见链表问题9:对单链表进行插入排序
- alg : 单向链表排序
- 链表的基本操作(插入,删除,排序、逆置等)
- 链表插入排序
- 利用快速排序对单链表进行排序