数据结构之链表(一)创建,插入,删除
2012-08-05 10:57
309 查看
链表是一种十分常见的数据结构,也是非常灵活的一种数据结构,应用十分广阔,在实际工作会经常用到,尤其保存映射关系时非常方便和灵活,经典的论坛拉链结构就是一种高效的和灵活的链表结构。
#include<iostream> using namespace std; struct node { int element; node *next; }; //创建长度为N的链表 node *create_list(int n) { if(n <= 0) { return NULL; } node *head = NULL; node *p = new node; if(p == NULL) { return NULL; } head = p; while(--n) { node *q = new node; if(q == NULL) { return NULL; } p->next = q; p = q; } p->next = NULL; return head; }
//求出链表的长度
int list_length(const node* head) { int len = 0; const node *p = NULL; p = head; while(p != NULL) { len++; p = p->next; } return len; }
//在第I个节点前面插入新的节点 bool insert_element(node* &head, int i, const int& element) { node *p = head; int j = 0; if(i == 1) { node *h = NULL; h = new node; if(h == NULL) { return false; } else { h->element = element; h->next = head; head = h; return true; } } while(p != NULL && j < i-2) { p = p->next; j++; } if(p != NULL && j <= i-2) { node *new_node = new node; if(new_node == NULL) { return false; } else { new_node->element = element; new_node->next = p->next; p->next = new_node; return true; } } return false; }
//删除第i个节点 bool del_element(node* &head, int i) { if(i < 1) { return false; } else if(i == 1) { node *h = head; head = head->next; delete h; return true; } else { int j = 0; node *p = NULL; node *t = NULL; p = head; while(p != NULL && j < i-1) { t = p; p = p->next; j++; } if(p != NULL && j <= i-1) { t->next = p->next; delete p; return true; } return false; } } int main() { int n = 10; node *head = create_list(n); node *p = head; int i = 0; while(p != NULL) { p->element = i++; p = p->next; } int e = 100; if(insert_element(head, 11, e)) { del_element(head, 1); del_element(head, 5); del_element(head, 9); p = head; while(p != NULL ) { cout<<p->element<<' '; p = p->next; } } return 0; }
相关文章推荐
- 数据结构:链表的基本操作(创建,删除,插入,逆序,摧毁)
- 数据结构链表创建,遍历,是否为空,求长度,插入,删除算法的演示
- 数据结构—链表的定义、创建、遍历、插入、删除
- 数据结构:链表创建、显示、求和、插入、删除等操作的代码实现
- 数据结构 单链表创建 插入 删除
- 数据结构学习二 数据结构之链表代码版【创建,遍历,删除,插入】
- 很简单的数据结构:链表线性存储的创建、取数据、数据添加、数据插入、数据删除
- 数据结构学习二 数据结构之链表图解版【创建,遍历,删除,插入】
- 数据结构-链表创建,删除,插入,反转,连接
- 数据结构之链表操作,创建,插入,删除,查找。
- C-链表的一些基本操作【创建-删除-打印-插入】
- 线性表的链式存储格式基本操作:创建链表、插入、删除、查找、求表长、打印链表
- 数据结构----单链表的创建、插入、删除、读取、遍历
- java语言编写链表的基本操作(链表的创建,插入,删除,打印,排序)
- 链表(创建,插入,删除和打印输出
- (C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- C++实现链表的创建、插入、删除
- 链表(创建,插入,删除和打印输出)
- 单向链表的操作:创建,删除,插入,销毁,查找