标题

[学习经验]C++对单链表的建立、测长和打印的代码实现

责任编辑:admin
日期:2012-11-29

单链表是常考的题,因为简单,很多时候需要直接写代码,因此即使是最基本的建立、测长、打印,一定要自己试验过才行,以下是我自己的一个简单实现。

有个主意的地方是对head的处理,我的处理是head本身是一个空姐点,没有存储数据,真正存放的是head的下一个节点。

create_len_print_list.h

  1. /* 
  2. * 建立、测长、打印一个单链表 
  3. */ 
  4. #include <iostream> 
  5. using namespace std; 
  6. typedef struct Student{ 
  7.     int data; 
  8.     struct Student* next; 
  9. } node ; 
  10.  
  11. node* create(); 
  12. int getListLen(node *); 
  13. void printList(node *); 

 

create_len_print_list.cpp

  1. #include "create_len_print_list.h" 
  2. node* create(){ 
  3.     node *head, *p, *newnode; 
  4.     p = head = (node*)malloc(sizeof(node)); 
  5.  
  6.     int data = 0; 
  7.     cout<<"input the int data( end with 0 ):"
  8.     while(cin>>data && data!=0){ 
  9.         newnode = (node*)malloc(sizeof(node)); 
  10.         newnode->data = data; 
  11.         p->next = newnode; 
  12.         p = newnode; 
  13.     } 
  14.     p->next = NULL; 
  15.     return head; 
  16. int getListLen(node *head){ 
  17.     int len = 0; 
  18.     node *p = head->next; 
  19.     while(p!=NULL){ 
  20.         len++; 
  21.         p=p->next; 
  22.     } 
  23.     return len; 
  24. void printList(node *head){ 
  25.     cout<<"List len = "<<getListLen(head)<<endl; 
  26.     node *p = head->next; 
  27.     while(p!=NULL){ 
  28.         cout<<p->data<<" "
  29.         p = p->next; 
  30.     } 
  31.     cout<<endl; 

用于测试的main.cpp

  1. #include <iostream> 
  2. using namespace std; 
  3. #include "create_len_print_list.h" 
  4. void main(){ 
  5.     node *head = create(); 
  6.     printList(head); 
  7.     system("pause"); 

 

 

阅读:

相关新闻:
评论