标签:style blog io color os sp for 数据 div
链表的创建过程是一个动态的生成过程,创建链表有两种思路,一种是从表头插入,另一种是从表尾插入。
表头插入思路:从一个空表开始,重复读入数据,生成新结点,将读入数据存放在新结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束标志为止。
表尾插入思路:从一个空表开始,重复读入数据,生成新结点,将读入数据存放在新结点的数据域中,然后将新结点插入到当前链表的表尾上,直到读入结束标志为止。
两种方法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 }
标签:style blog io color os sp for 数据 div
原文地址:http://www.cnblogs.com/xp12/p/4140581.html