单链表的创建与使用
来源:互联网 发布:js设置style的left 编辑:程序博客网 时间:2024/06/06 20:31
/*作 者:清风小陈 完成日期: 2017 年 03 月 23 日 */ #include<stdio.h>#include<stdlib.h> #define OK 1 #define Error 0 #define TRUE 1 #define FALSE 0typedef int Status;typedef int ElemType;typedef struct LNode{int data;struct LNode*next;}LNode,*LinkList;//定义结构类型和变量Status Init(LinkList&L){L=new LNode;L->next=NULL;return OK;}//初始化链表 Status ListEmpty(LinkList &L) { if(L->next) return FALSE; else return TRUE; }//判断表是否为空Status ListInsert(LinkList &L, int i, ElemType e) { int j=0; LinkList p=L; LinkList s; while(p&&j<i-1) { p=p->next; j++; } if(!p||j>i-1) return Error; s=(LinkList)malloc(sizeof(struct LNode)); s->data=e; s->next=p->next; p->next=s; return OK; }//插入算法Status ListDelete(LinkList &L,int i,ElemType &e) { int j=0; LinkList p=L,q; while(p->next&&j<i-1) { p=p->next; j++; } if(!p->next||j>i-1) {printf("wz--Error\n");return Error;} q=p->next; p->next=q->next; e=q->data; free(q); return OK; }//删除算法Status GetElem(LinkList L,int i,ElemType &e){LinkList p;p=L->next; int j=1;while(p&&j<i){p=p->next;++j;}if(!p||j>i) return Error;e=p->data;return OK;}//按位序取值Status DestroyList(LinkList &L) { LinkList q; while(L) { q=L->next; free(L); L=q; } return OK; }//销毁单链表LStatus ClearList(LinkList &L) { LinkList p,q; p=L->next; while(p) { q=p->next; free(p); p=q; } L->next=NULL; return OK; }//将L重置为空表 int ListLength(LinkList &L) { int i=0; LinkList p=L->next; while(p) { i++; p=p->next; } return i; }//返回L中数据元素个数 Status output(LinkList L){if(L==0){printf("Error\n");return Error;}LinkList p=L->next;while(p){printf("%d ",p->data);p=p->next;}printf("\n");return OK;}//输出单链表main(){int i,k,z,c;LinkList L;Init(L); //初始化单链表ListInsert(L,1,1);for(i=2;i<=10;i++)ListInsert(L,i,i);printf("你创建的链表为:");output(L);printf("\n");ListInsert(L,11,100); printf("当前链表为:");output(L); //执行增值操作后的单链表printf("\n");ListDelete(L,1,k);printf("你删除的值为:%d\n\n",k);printf("当前链表为:");output(L); //执行删除操作后的单链表printf("\n");GetElem(L,1,z); //取值printf("你要取的值为:%d\n\n",z);c=ListLength(L);printf("当前链表元素个数:%d\n\n",c);ClearList(L); //将L重置为空表DestroyList(L); //销毁单链表L}
0 0
- 单链表的创建与使用
- Dll的创建与使用
- dll的创建与使用
- 库的创建与使用
- patch的创建与使用
- 进度条的创建与使用
- 二叉排序树的创建与使用
- 二叉排序树的创建与使用
- JavaBean的创建与使用
- UITableView的创建与使用
- BroadCastReceiver的创建与使用
- 数据库的使用与创建
- 线程的创建与使用
- DLL的创建与使用
- 线程的创建与使用
- 对象的创建与使用
- Fragment的创建与使用
- DLL的创建与使用
- Java设计模式(二):单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率
- Spring中bean的作用域
- Codeforces 574B Bear and Three Musketeers【思维】
- lua位运算
- C语言之单向链表封装
- 单链表的创建与使用
- Spring AOP理解
- Codeforces Round #266 (Div. 2) C. Number of Ways
- 写在MirrorII开始之前
- 高性能网络编程7--tcp连接的内存使用
- 二分——Poj 3273 Monthly Expense
- 使用bootstrap-fileinput的问题:上传时upload.parseRequest(request)得到的List为空
- [BZOJ]3781: 小B的询问
- Ruby中的面向对象