计蒜客 数据结构 链表 C++
2016-08-11 17:12
267 查看
//链表的插入insert()和删除delete_node()还有输出,翻转everse() #include<iostream> using namespace std; class Node { public: int data; Node* next; Node(int _data) { data = _data; next = NULL; } }; class LinkList { private: Node* head; public: LinkList() { head = NULL; } void insert(Node* node,int index){ // 头指针为空,那么我们就让node成为头指针 if(head == NULL){ head = node; return; } //第二种特殊情况,就是如果插入节点后的位置是链表首位,也就是index等于0的时候。 if(index == 0){ //如果节点插入后是链表首位,那么先让node的指针指向当前表头head, //完成node的插入,然后让node成为头结点,完成表头的更新, //然后用return语句结束函数 node->next = head; head = node; return; } //*写在类名旁边,还是变量名旁边意思是相同的 Node *current_node = head; int count = 0; while(current_node->next != NULL && count < index -1){ current_node = current_node->next; count++; } if(count == index - 1){ node->next = current_node->next; current_node->next = node; } } void output(){ if(head == NULL){ return; } Node *current_node = head; while(current_node != NULL){ //节点数据的表示方式->data cout<<current_node->data<<" "; current_node = current_node->next; } //输出回车 cout<<endl; } void delete_node(int index){ if(head == NULL){ return; } Node* current_node = head; int count = 0; if(index == 0){ head = head->next; delete current_node; return; } while(current_node->next != NULL && count < index-1){ current_node = current_node->next; count = count + 1; } //找到指定的节点,还有检测是不是删除最后一个节点 if( count == index - 1 && current_node->next != NULL){ Node* delete_node = current_node->next; current_node->next = delete_node->next; delete delete_node; } } void reverse(){ if(head == NULL){ return; } Node *next_node, *current_node; current_node = head->next; head->next = NULL; while(current_node != NULL){ next_node = current_node->next; current_node->next =head; head = current_node; current_node = next_node; } } }; int main() { LinkList linklist; for(int i = 1 ; i <= 10 ; i++){ Node *node = new Node(i); linklist.insert(node,i-1); } linklist.output(); linklist.delete_node(5); linklist.output(); linklist.reverse(); linklist.output(); return 0; }
相关文章推荐
- 计蒜客 数据结构 链表——约瑟夫环 C++
- 计蒜客 数据结构 链表 ——应用筛选简历 C++
- (摘)面向对象c++数据结构之基本数据结构-链表-使用链表管理器(连载中)
- C++数据结构------顺序表和链表
- 数据结构 - 有两个链表,第一个升序,第二个降序,合并为一个升序链表(C++)
- C/C++版数据结构之链表<一>
- [c/c++] C数据结构: 链表 Linked List
- 数据结构 链表的lua实现 仿照C++中list 实现
- [C++]数据结构:基于链表结构的Chain类和遍历器ChainIterator类
- C/C++版数据结构之链表<三>
- C/C++版数据结构之链表<二>
- C/C++版数据结构之链表<三>
- 链表的相关操作查找插入删除(c++ 数据结构)
- C++数据结构--链表
- 数据结构学习系类列十-链表集合(c++)
- 数据结构 - 反转单链表(C++)
- 《摘》面向对象c++数据结构--基本数据结构之链表-双向链表(结束)(凌风)
- 数据结构学习系列三-单向循环链表(c++实现且应用模板)
- 数据结构_链表_多项式求导_C++实现
- 面向对象c++数据结构--基本数据结构之链表(前篇)(凌风)