首页 > 代码库 > 链表学习一:单链表创建-头插入与尾插入
链表学习一:单链表创建-头插入与尾插入
链表的创建过程是一个动态的生成过程,创建链表有两种思路,一种是从表头插入,另一种是从表尾插入。
表头插入思路:从一个空表开始,重复读入数据,生成新结点,将读入数据存放在新结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束标志为止。
表尾插入思路:从一个空表开始,重复读入数据,生成新结点,将读入数据存放在新结点的数据域中,然后将新结点插入到当前链表的表尾上,直到读入结束标志为止。
两种方法C++实现如下:
1 #include<iostream> 2 using namespace std; 3 4 typedef int elemtype; 5 typedef struct node 6 { 7 elemtype m_nData; 8 node* m_pNext; 9 }ListNode;10 11 //创建链表一:头插法建表12 ListNode* CreateList(ListNode* m_pHead){13 m_pHead = new ListNode; 14 if (!(m_pHead))15 {16 cout << "分配内存空间失败!";17 }18 int listsize = 10;19 cout << "请输10个数字:"<<endl;20 m_pHead->m_pNext= NULL;21 for (int i = listsize; i > 0; i--)22 {23 ListNode* m_pTemp = m_pHead;24 ListNode*m_pNewNode = new ListNode;25 cin>> m_pNewNode->m_nData;26 m_pNewNode->m_pNext = m_pTemp->m_pNext;27 m_pTemp->m_pNext = m_pNewNode;28 }29 return m_pHead;30 }31 32 //创建链表二:尾插法创建33 ListNode* CreateList2(ListNode* m_pHead){34 m_pHead= new ListNode;35 if (!(m_pHead))36 {37 cout << "分配内存空间失败!";38 }39 m_pHead->m_pNext = NULL;40 ListNode* pTail =m_pHead;41 42 int listsize = 10;43 cout << "请输10个数字:" << endl;44 45 for (int i = listsize; i >0; i--)46 {47 ListNode* pNewNode = new ListNode;48 cin >> pNewNode->m_nData;49 pTail->m_pNext = pNewNode;50 pTail = pNewNode;51 pNewNode->m_pNext = NULL;52 }53 return m_pHead;54 }55 //打印链表56 void printList(ListNode* m_pHead){57 ListNode* m_pTemp=m_pHead; 58 while (m_pTemp->m_pNext )59 {60 m_pTemp = m_pTemp->m_pNext;61 cout << m_pTemp->m_nData << "\t";62 }63 cout << endl;64 }65 66 void main()67 {68 ListNode* m_pList=NULL;69 m_pList= CreateList(m_pList);70 printList(m_pList);71 72 ListNode* m_pList2 = NULL;73 m_pList2 = CreateList2(m_pList2);74 printList(m_pList2);75 }
链表学习一:单链表创建-头插入与尾插入
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。