数据结构-链表
来源:互联网 发布:windows pe 编辑:程序博客网 时间:2024/06/07 12:31
在链表中元素相互依赖,串联而成。
#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) { if (head == NULL) { head = node; return; } if (index == 0) { 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) { 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++; } 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(3); linklist.output(); linklist.reverse(); linklist.output(); return 0;}
计蒜客的对应章节的答案:
哪位同学最优秀:
#include <iostream>#include <cstdio>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 * current_node=head; int count=0; if(index==0){ node->next=head; head=node; return; } 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 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++; } if(count==index-1&¤t_node->next!=NULL){ Node * delete_node=current_node->next; current_node->next=delete_node->next; delete delete_node; } } void print(int index){ Node * current_node=head; for(int i=0;i<index-1;i++){ current_node=current_node->next; } cout<<current_node->data; return; }};int main(){ int n,m; Linklist linklist; cin>>n>>m; for(int i=1;i<=n;i++){ Node * node = new Node(i); linklist.insert(node, i-1); } for(int i=0;i<m;i++){ int t; cin>>t; linklist.delete_node(t-1); } linklist.print((n-m)/2+1); return 0;}
0 0
- 数据结构-链表
- 数据结构-链表
- 数据结构-链表
- 数据结构---链表
- 数据结构 - 链表
- 【数据结构】链表
- 数据结构-链表
- '数据结构' 链表
- 数据结构-链表
- 【数据结构】链表
- 数据结构--链表
- 【数据结构】 链表
- 数据结构--链表
- 数据结构-链表
- 数据结构 - 链表
- 链表 - 数据结构
- 数据结构:链表
- [数据结构]链表
- typedef定义结构体变量中的问题及解决方法
- 【html】:学习html的见解
- 润乾集算报表交互分析之伸缩显示
- jQuery对AJAX的封装——$.get(验证用户名是否存在)
- kindeditor使用方法
- 数据结构-链表
- OpenCV统计时间
- hello
- SQL双top分页存储过程
- Minimum Size Subarray Sum
- Spring 整合 Redis
- 195. Tenth Line
- /proc/interrupts 和 /proc/stat 查看中断的情况
- 润乾集算报表绘制企业仪表盘