简单数据结构--链表

来源:互联网 发布:csgo国服免费 知乎 编辑:程序博客网 时间:2024/04/28 17:54
/** File name  : LinkList.cpp* Function   : 链表的C++实现* Created on : 2016年4月20日* Author     : beijiwei@qq.com* Copyright  : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。任何单位和个人不经本人允许不得用于商业用途*/#include <cstdio>#include <iostream>using namespace std;typedef struct Node {int data;struct Node * next;//struct Node * last;}Node, *pNode;typedef pNode LinkList;bool LinkList_create(LinkList & L);void LinkList_traverse(LinkList & L);bool LinkList_insert(LinkList &L, int k, int elem);bool LinkList_delete(LinkList &L, int k);bool LinkList_get_elem(LinkList &L, int k, int & elem);int LinkList_get_length(LinkList &L);int LinkList_search_elem(LinkList &L, int elem);void LinkList_destroy(LinkList &L);int main(int argc, char** argv){LinkList LK;LinkList_create(LK);LinkList_traverse(LK);LinkList_insert(LK, 0, 10);LinkList_insert(LK, 1, 11);LinkList_insert(LK, 2, 12);LinkList_insert(LK, 3, 13);LinkList_insert(LK, 2, 18);LinkList_traverse(LK);LinkList_delete(LK, 2);LinkList_delete(LK, 3);LinkList_delete(LK, 0);LinkList_traverse(LK);int elem = 0;LinkList_get_elem(LK, 1, elem);cout << "elem=" << elem << endl;LinkList_insert(LK, 0, 10);LinkList_insert(LK, 3, 13);LinkList_traverse(LK);cout << "The length of LK is : " << LinkList_get_length(LK) << endl;cout<<"Search elem 15 :"<< LinkList_search_elem(LK, 15)<<endl;cout<<"Search elem 13 :"<< LinkList_search_elem(LK, 13)<< endl;LinkList_destroy(LK);return 0;} bool LinkList_create(LinkList & L){L = new Node;L->next = NULL;L->data = 0;//lengthreturn true;}void LinkList_traverse(LinkList & L){pNode p = L->next;if (p == NULL) {cout << "it is a empty LinkList." << endl;return;}while (p != NULL) {cout << p->data << "\t";p = p->next;}cout << endl;}bool LinkList_insert(LinkList &L, int k, int elem){pNode p = L;pNode ptmp = NULL;if (k < 0 || k > L->data )return false;for (int i = 0; i<k; i++) {p = p->next;}ptmp = new Node;ptmp->data = elem;ptmp->next = p->next;p->next = ptmp;L->data++;return true;}bool LinkList_delete(LinkList &L, int k){pNode p = L;pNode ptmp = NULL;if (k < 0 || k > L->data - 1)return false;for (int i = 0; i<k; i++) {p = p->next;}ptmp = p->next;p->next = ptmp->next;delete ptmp;L->data--;return true;}bool LinkList_get_elem(LinkList &L, int k, int & elem){pNode p = L;if (k < 0 || k > L->data-1)return false;for (int i = 0; i<k; i++) {p = p->next;}elem = p->data;return true;}int LinkList_get_length(LinkList &L){return L->data;}int LinkList_search_elem(LinkList &L, int elem){pNode p = L->next;if (L->data == 0)return -1;int k = 0;while(p !=NULL){if (p->data == elem)return k;p = p->next;k++;}return -1;}void LinkList_destroy(LinkList &L){pNode p = L;pNode ptmp = NULL;while (p->next != NULL) {ptmp = p->next;delete p;p = ptmp;}}

0 0
原创粉丝点击