本文主要是介绍单链表创建-遍历-排序-插入-删除-逆序操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include <iostream>
using namespace std;typedef struct NodeType
{int data;NodeType* pNext;
}NodeType;
//链表的1创建 2 遍历 3排序 4 插入 5 删除
NodeType* create_list();
void traverse_list(NodeType* pHead);
void sort_list(NodeType* pHead);
void insert_list(NodeType*,int pos,int val);
void delete_list(NodeType*,int pos);NodeType* reverse_list(NodeType* pHead);int main()
{NodeType* pHead=create_list();//insert_list(pHead,1,33);//traverse_list(pHead);//delete_list(pHead,1);pHead=reverse_list(pHead);traverse_list(pHead);return 0;
}
//*****************创建链表*************************************************/
NodeType* create_list()
{cout <<" 输入创建节点个数" <<endl;int len;int val;cin >> len;if (len<=0){exit(-1);}NodeType* pHead=new NodeType;NodeType* p=pHead;for (int i=0;i<len;i++){cin >>val;NodeType* pNew=new NodeType;pNew->data=val;pNew->pNext=NULL;p->pNext=pNew;p=pNew;}return pHead;
}
//*****************遍历链表*************************************************/
void traverse_list(NodeType* pHead)
{for (NodeType*p=pHead->pNext;p!=NULL;p=p->pNext){cout << p->data << " ";}cout << endl;
}
/*****************排序链表*************************************************/
void sort_list(NodeType* pHead)
{NodeType* p=pHead->pNext;NodeType* pTail;for (;p->pNext!=NULL;p=p->pNext){for (pTail=p->pNext;pTail!=NULL;pTail=pTail->pNext){if((p->data)>(pTail->data)){swap(p->data,pTail->data);}}}
}
/*****************插入链表*************************************************/
void insert_list(NodeType* pHead,int pos,int val)
{//不仅仅是判断条件,而且还有定位p(插入点位置前一个位置)NodeType* p=pHead;for (int i=0;p!=NULL&&i<pos-1;p=p->pNext){++i;}//插入 就插入一个节点NodeType* pNew=new NodeType;pNew->data=val;pNew->pNext=p->pNext;p->pNext=pNew;
}/*****************插入链表*************************************************/
void delete_list(NodeType* pHead,int pos)
{NodeType* p=pHead;for ( int i=0;i<pos-1&&p!=NULL;p=p->pNext,i++){}NodeType* q=p->pNext;p->pNext=p->pNext->pNext;delete q;}
/*****************逆序链表*************************************************/
NodeType* reverse_list(NodeType* pHead)
{NodeType* p1,*p2,*p3;if (pHead==NULL||pHead->pNext==NULL){return pHead;}p1=pHead->pNext;p2=p1->pNext;p1->pNext=NULL;while (p2){p3=p2->pNext;p2->pNext=p1;p1=p2;p2=p3;}pHead->pNext=p1;return pHead;
}
逆序链表笔记图:
这篇关于单链表创建-遍历-排序-插入-删除-逆序操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!