2022年数据结构链表操作 .pdf
《2022年数据结构链表操作 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构链表操作 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、/* * 数据结构链表等操作 * */#include #include usingnamespace std; /* 单链表节点结构*/typedef struct NodeType char elem; NodeType *next; Node; /* 双链表节点结构*/typedef struct DNodeType char elem; DNodeType *next; DNodeType *prev; DNode; /*=*/* 创建链表*/Node * CreateList(Node *head) if (NULL = head)/ 分配头节点空间 head=(Node*)mall
2、oc(sizeof(Node), head-next=NULL; Node *current=head , *temp; char ch; while( 1) coutch; if ( # = ch) /*# 结束输入 */名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - break; temp=(Node *) malloc ( sizeof(Node) ); temp-elem=ch; temp-next=NULL; cur
3、rent-next=temp; /* 当前节点的后驱指向新节点*/ current=temp; /* 当前节点为链表尾节点*/ return head; /*=*/* 输出链表*/void PrintList(Node *head) Node * current=head-next; coutelem) coutsetw(5)elem; current=current-next; coutnext; /* 当前节点 */ Node *prev=head; /* 前驱节点 */名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精
4、心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - Node *temp; /* 过渡节点 */while(current) /* 移动至尾节点*/ prev=current; current=current-next; temp=(Node*) malloc( sizeof(Node) ); temp-elem=elem; temp-next=NULL; prev-next=temp; /* 尾节点的后驱指向新节点*/return head; /*=*/* 删除节点 */Node *DeleteNode(Node *head,char elem)
5、 if (NULL = head | NULL = elem) return head; if (NULL = head-next) return head; Node *prev,*current; prev=head; current=head-next; while(current) if (current-elem = elem) /* 匹配节点元素*/ prev-next=current-next; /* 前驱节点的后驱指向当前节点的下一个节点 */ free(current); /* 释放当前节点*/return head; prev=current; current=curren
6、t-next; /* 移动至下一个节点*/名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - return head; /*=*/* 单链表逆置 */Node *ReverseList(Node *head) if (NULL = head) return head; if (NULL = head-next) return head; if (NULL = head-next-next) return head; Node *c
7、urr=head-next; /* 当前节点 */ head-next=NULL; Node *temp; while(curr) temp=curr-next; /* 暂存下一个节点*/* 把当前节点插入到head 节点后 */ curr-next=head-next; head-next=curr; curr=temp; /* 移动至下一个节点*/ return head; /*=*/* 求中间节点 */Node * MiddleNode(Node *head) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理
8、- - - - - - - 第 4 页,共 10 页 - - - - - - - - - if (NULL = head) return head; if (NULL = head-next) return head-next; Node *p1,*p2; p1=head; p2=head; while(p2-next) /*p2节点移动2 个节点位置 */ p2=p2-next; if (p2-next) /* 判断p2 后驱节点是否存在,存在则再移动一次 */ p2=p2-next; /*p1节点移动1 个节点位置 */ p1=p1-next; return p1; /*=*/* 合并有序
9、单链表*/Node * MergeList(Node * h1,Node * h2) if (NULL = h1 | NULL = h2) return h1; if (NULL = h1-next ) return h2; if (NULL = h2-next) return h1; Node * curr1,*curr2,*prev1,*temp; prev1=h1; /* 链表 1 的前驱节点 */ curr1=h1-next; /* 链表 1 的当前节点 */ curr2=h2-next; /* 链表 2 的当前节点 */名师资料总结 - - -精品资料欢迎下载 - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构链表操作 2022 数据结构 操作
限制150内