编程实现单链表的创建等基本操作
2016-09-04 09:53
447 查看
</pre><pre name="code" class="cpp">// 单链表建立测长和打印.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; struct ListNode{ int value; ListNode* next; }node; ListNode* create(int* data,int length) { if (data == NULL || length <= 0) return NULL; ListNode* pHead = NULL; ListNode* pPre = NULL; for (int i = 0; i < length; i++) { ListNode* pNode = new ListNode(); pNode->value = data[i]; pNode->next = NULL; if (pHead == NULL) pHead = pNode; else pPre->next = pNode; pPre = pNode; } return pHead; } int length(ListNode* pHead) { ListNode* pNode = pHead; if (pHead == NULL) return 0; int len = 0; while (pNode != NULL) { ++len; pNode = pNode->next; } return len; } void print(ListNode* pHead) { ListNode* pNode = pHead; while (pNode != NULL){ cout << pNode->value; pNode = pNode->next; } cout << endl; } //单链表的删除 ListNode* del(ListNode* pHead, int num) { ListNode* pNode = pHead; ListNode* pTemp = NULL; while (num != pNode->value && pNode->next != NULL) { pTemp = pNode; pNode = pNode->next; } if (pNode->value == num) { if (pNode == pHead) { pHead = pNode->next; free(pNode); } else { pTemp->next = pNode->next; free(pNode); } } return pHead; } //单链表的插入 ListNode* Insert(ListNode* pHead, int num) { ListNode* pNode = pHead; ListNode* pTemp = NULL; ListNode* pNew = (ListNode*)malloc(sizeof(ListNode)); pNew->value = num; while (pNew->value > pNode->value && pNode->next != NULL) { pTemp = pNode; pNode = pNode->next; } if (pNew->value <= pNode->value) { if (pHead == pNode) { pNew->next = pNode; pHead = pNew; } else { pTemp->next = pNew; pNew->next = pNode; } } else { pNode->next = pNew; pNew->next = NULL; } return pHead; } //单链表的排序 ListNode* sort(ListNode* pHead) { int temp = 0; int len = length(pHead); if (pHead == NULL || pHead->next == NULL) return pHead; ListNode* pNode = pHead; for (int i = 1; i < len; i++) { pNode = pHead; for (int j = 0; j < len - i; j++) { if (pNode->value > pNode->next->value) { temp = pNode->value; pNode->value = pNode->next->value; pNode->next->value = temp; } pNode = pNode->next; } } return pHead; } int _tmain(int argc, _TCHAR* argv[]) { int data[] = { 1, 2, 3, 4, 5 }; ListNode* pHead = create(data, 5); print(pHead); cout << "链表的长度为:" << length(pHead) << endl; ListNode* pNewHead = del(pHead,3); print(pHead); ListNode* pNewHead1 = Insert(pHead, 3); print(pHead); ListNode* pNewHead2 = sort(pHead); print(pHead); return 0; }
相关文章推荐
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)(转)
- 笔试题:创建一个单链表,结点包含学生的学号,姓名,性别,年龄信息.写几个程序,实现按学生学号插入,查询,删除等操作.
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- [C#]实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- 第2章_基本数据类型和基本操作_编程练习Exercise2.7通过创建窗口进行大小写的切换
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)zz
- C# 实现单链表的基本操作
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)zz
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- vb sql server创建数据库实现增、删、改、查等基本操作
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- c语言实现单链表的操作:创建,删除,插入,反转, 排序等