关于链表的一些简单操作
2014-06-27 22:51
441 查看
终于上黄金了..
然后就是一波2连败...
最近 完全不想做题啊 一做题 就想碎觉啊
郁闷死了
根据书本 写了点关于单向链表的简单操作
可能还存在点小bug---先放它一马吧
以后可能再进行补充关于它的操作 毕竟还有好多
先慢慢找回敲键盘打代码的感觉
厌
View Code
today:
我就希望你可以记住我
记住我这样活过
这样在你身边呆过
然后就是一波2连败...
最近 完全不想做题啊 一做题 就想碎觉啊
郁闷死了
根据书本 写了点关于单向链表的简单操作
可能还存在点小bug---先放它一马吧
以后可能再进行补充关于它的操作 毕竟还有好多
先慢慢找回敲键盘打代码的感觉
厌
/* 线性表之单向链表的一些常见操作 */ #include <iostream> using namespace std; typedef int ElemType; typedef struct LNode { ElemType data; struct LNode* next; }LinkList; /* 建立单向链表----尾插法 */ void CreateLinkList( LinkList* &head , ElemType* arr , int n ) { cout<<"建立链表:"<<endl; LinkList* temp , *rend; head = new LinkList; rend = head; for( int i = 0 ; i<n ; i++ ) { temp = new LinkList; temp->data = arr[i]; rend->next = temp; rend = temp; } rend->next = NULL; } /* 建立单向链表-头插法 这里我不使用它 个人更倾向于尾插法 void CreateLinkList( LinkList* &head , ElemType* arr , int n ) { LinkList* temp; head = new LinkList; head->next = NULL; for( int i = 0 ; i<n ; i++ ) { temp = new LinkList; temp->data = arr[i]; temp->next = head->next; head->next = temp; } } */ /* 输出单向链表 */ void printList(LinkList* head) { LinkList* p = head->next; cout<<"输出链表:"<<endl; while( p!=NULL ) { cout<<p->data<<endl; p = p->next; } } /* 求链表中第x个结点的值 */ bool getElemType( LinkList* head , int x , ElemType& value ) { int index = 1; LinkList* p = head->next; if( x<=0 ) { cout<<"fail--error"<<endl; return false; } while( index<x && p!=NULL ) { index++; p = p->next; } if( p==NULL ) { cout<<"damn it.this index is not found"<<endl; return false; } else { cout<<"success-----"<<endl; value = p->data; } return true; } /* 查找特定ElemType的结点标号 */ bool getIndex( LinkList* L , ElemType value , int& index ) { int i = 1; LinkList* p = L->next; while( p!=NULL && p->data!=value ) { p = p->next; i++; } if( p==NULL ) { cout<<"dama it.this value is not found"<<endl; return false; } else { cout<<"success~~~~~"; index = i; } return true; } /* 插入ElemType的元素到第I个结点的位置 */ bool insertElemType( LinkList* &head , int index , ElemType value ) { int i = 1; LinkList* p = head; LinkList* temp; if( index<=0 ) { cout<<"fail--error"<<endl; return false; } while( i<index && p!=NULL ) { i++; p = p->next; } if( p==NULL ) { cout<<"****insert fail****"<<endl; return false; } else { temp = new LinkList; temp->data = value; temp->next = p->next; p->next = temp; cout<<"****insert successfully****"<<endl; } return true; } /* 删除第i个结点,并返回该结点的数据信息 */ bool deleteNode( LinkList* head , int index , ElemType& value ) { int i = 1; LinkList* p = head; LinkList* temp; if( index<=0 ) { cout<<"---fail error--"<<endl; return false; } while( i<index && p!=NULL ) { i++; p = p->next; } if( p==NULL ) { cout<<"****fail delete***"<<endl; return false; } else { temp = p->next; if( temp==NULL ) { cout<<"****fail delete****"<<endl; return false; } value = temp->data; p->next = temp->next; cout<<"***delete successfully****"<<endl; delete temp; } return true; } /* 判断链表是否为空表 */ bool emptyList( LinkList* head ) { return head->next==NULL; } /* 求出链表的长度 */ int ListLength( LinkList* head ) { int len = 0; LinkList* p = head; while( p->next!=NULL ) { len++; p = p->next; } return len; } /* 删除整个链表 */ void DestoryList( LinkList* &head ) { LinkList* p = head; LinkList* temp = p->next; while( temp!=NULL ) { delete p; p = temp; temp = p->next; } delete p; } int main() { int arr[20] = {5,2,0,1,3,1,4}; LinkList* pList; CreateLinkList( pList , arr , 7 ); printList( pList ); int value; int index; if( getElemType( pList , 3 , value ) ) { cout<<"the value is:"<<value<<endl; } if( getIndex(pList , 1 , index ) ) { cout<<"the index is:"<<index<<endl; } if( insertElemType( pList , 6 , 11 ) ) { cout<<"成功插入链表元素"<<endl; printList( pList ); } if( deleteNode( pList , 4 , value ) ) { cout<<"the node deleted ' s data is:"<<value<<endl; printList( pList ); } if( emptyList( pList ) ) { cout<<"空表"<<endl; } cout<<"the length is:"<<ListLength(pList)<<endl; DestoryList( pList ); return 0; }
View Code
today:
我就希望你可以记住我
记住我这样活过
这样在你身边呆过
相关文章推荐
- 简单的new操作重载以及关于内存的一些体会
- 关于字符串操作的一些函数简单说明与应用
- 关于整理工作中用到的链表和哈希表的简单操作
- 关于单向链表创建以及一些简单的增删查改功能
- C语言中关于链表的一些操作
- 关于链表操作一些有趣的问题!
- 关于链表的一些重要操作(Important operations on a Linked List)
- 一些关于链表操作的代码
- 关于C#对EXCEL的一些简单操作
- .net关于坐标之间一些简单操作
- 关于数组的一些简单操作
- 合并两个排序的链表及简单链表的一些操作(添加节点、删除节点)
- 关于Xpath解析的一些简单操作
- 【C语言】链表的一些简单操作
- 关于MyEclipse的一些简单配制安装操作
- iOS学习笔记2—关于tableView的一些简单操作
- 关于ASP控件对象的一些简单操作
- 尹成老师,关于链表的一些操作(C)
- 关于矩阵分行列的一些简单操作。
- android中关于美化Button按钮的一些简单操作(其他控件也类似)