单向链表的操作
来源:互联网 发布:系统仿真软件arena 编辑:程序博客网 时间:2024/05/22 02:42
单向链表的操作,代码根据严蔚敏版<数据结构>进行编写,代码如下
#include <malloc.h>#include <stdlib.h>#include <stdio.h>typedef enum Status{ OK, ERROR,} Status;typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;} LNode,*LinkList;void printf_L(const LinkList &L){ LinkList p; p = L->next; if(L->next) while(p) { printf("%d ",p->data); p = p->next; } printf("\n");}Status GetElem_L(LinkList &L,int i,ElemType &e){ LinkList p; int j = 1; p = L->next; while(p&&j<i) { p = p->next; ++j; } if(!p || j > i) return ERROR; e = p->data; printf("%d",e); return OK;}Status ListInsert_L(LinkList &L,int i,ElemType &e){ LinkList p = L; int j = 0; while(p &&j< i - 1) { p = p->next; ++j; } if(!p || j > i - 1) return ERROR; LinkList s = (LinkList)malloc(sizeof(LNode)); s->data = e; s->next = p->next; p->next = s; return OK;}Status ListDelete_L(LinkList &L,int i,ElemType &e){ LinkList p = L; int j = 0; while(p->next && j < i - 1 ) { p = p->next; ++j; } if(!(p->next) ||j > i -1) return ERROR; LinkList q; q = p->next; p->next = q->next; e = q->data; free(q); return OK;}void CreateList_L(LinkList &L,int n){ L = (LinkList)malloc(sizeof(LNode)); L->next = NULL; int i; for(i = n; i >0; --i) { LinkList p = (LinkList)malloc(sizeof(LNode)); scanf("%d",&p->data); p->next = L->next; L->next = p; }}Status DestoryList(LinkList &L){ LinkList p; if(!L) return ERROR; while(L) { p = L->next; free(L); L=p; } return OK;}void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){ LinkList pa = La->next; LinkList pb = Lb->next; LinkList pc; Lc = pc = La; while(pa && pb) { if(pa->data <= pb->data) { pc->next = pa; pc = pa; pa = pa->next; } else { pc->next = pb; pc = pb; pb = pb->next; } } pc->next = pa?pa:pb; free(Lb);}int main(){ LinkList La,Lb,Lc; CreateList_L(La,5); printf_L(La); CreateList_L(Lb,4); printf_L(Lb); MergeList_L(La,Lb,Lc); printf_L(Lc); DestoryList(Lc); return 0;}
代码说明:需要用c++编译器进行编译,c编译器不支持引用类型。
0 0
- 单向链表的操作
- 单向链表的操作
- 单向链表的操作
- 单向链表的操作
- 单向链表的操作
- 单向链表的操作
- 单向链表的操作
- 单向链表的操作
- 单向链表,单向循环链表的基本操作
- java对单向单向链表的操作
- 单向链表操作
- 单向链表操作
- 单向链表操作
- 有序单向链表的相关操作
- java 单向链表的操作
- 基本单向链表的操作
- 单向链表的基本操作
- 单向链表的一些操作
- 几个VS编译器(cl.exe)命令行编译的例子
- Android笔记七.ListView+Adapter
- 理解OAuth 2.0
- java调用.net服务例子
- window.setInterval的用法与实例
- 单向链表的操作
- [Unity3D]Unity3D游戏开发之塔防游戏项目讲解(上)
- (30 hackdays day 3) Koding – 把chromebook变成开发利器
- ConcurrentHashMap、synchronized与线程安全
- 斯坦福大学公开课 :机器学习课程(Andrew Ng)——7、监督学习:Support Vector Machine,立
- java里类方法和实例方法区别
- OpenGl学习第三章
- C编译器剖析_源代码说明
- shell笔记