C语言-(单-双)链表
来源:互联网 发布:网络违法犯罪举报电话 编辑:程序博客网 时间:2024/05/16 12:28
用C语言写一个链表的模版
单链表
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LinkList;/*---建立单链表---*//*---头插法建表---*/void CreateListF(LinkList * &L,ElemType a[],int n){ LinkList *s; int i; L=(LinkList *)malloc(sizeof(LinkList)); L->next=null; for(i=0;i<n;i++) { s=(LinkList)malloc(sizeof(LinkList)); s->data=a[i]; s->next=L->next; L->next=s; }}/*---尾插法建表---*/ void CreateListR(LinkList * &L,ElemType a[],int n){ LinkList *s,*r; int i; L=(LinkList *)malloc(sizeof(LinkList)); r=L; for(i=0;i<n;i++) { s=(LinkList *)malloc(sizeof(LinkList)); s->data=a[i]; r->next=s; r=s; } r->next=NULL;}/*---初始化线性表---*/void InitList(LinkList * &L){ L=(LinkList *)malloc(sizeof(LinkList)); L->next=NULL:}/*---注销线性表---*/void DestroyList(LinkList * &L){ LinkList * pre=L,*p=L->next; while(p!=NULL) { free(pre); pre=p; p=pre->next; } free(pre);}/*---线性表是否为空---*/bool ListEmpty(LinkList * &L) { return(L->next==NULL);}/*---线性表的长度---*/int ListLength(LinkList * &L){ int n=0; LinkList *p=L; while(p->next!=NULL) { n++; p=p->next; } return n;}/*---输出线性表---*/void DispList(LinkList * &L) { LinkList *p=L->next; while(p!=NULL) { printf("%d",p->next); p=p->next; } printf("\n");}/*---求线性表中某个数据元素值---*/bool GetElem(LinkList * &L,int i,ElemType &e) { int j=0; LinkList *p=L; while(j<i&&p!=NULL) { j++; p=p->next; } if(p==NULL) { return false; } else { e=p->data; return true; }}/*---按元素值查找---*/int LocateElem(LinkList *L,ElemType e){ int i=1; LinkList *p=L->next; while(p!=NULL&&p->data!=e) { p=p->next; i++; } if(p==NULL) { return(0); } else { return(i); }}/*---插入数据元素---*/bool ListInsert(LinkList * &L,int i,ElemType e){ int j=0; LinkList *p=L,*s; while(j<i-1&&p!=NULL) { j++; p=p->next; } if(p==NULL) { return false; } else { s=(LinkList *)malloc(sizeof(LinkList)); s->data=e; s->next=p->next; p->next=s; return true; }} /*---删除数据元素---*/bool ListDelete(LinkList * &L,int i,ElemType e) { int j=0; LinkList *p=L,*q; while(j<i-1&&p!=NULL) { j++; p=p->next; } if(p==NULL) { return false; } else { q=p->next; if(q==NULL) { return false; } e=q->data; p->next=q->next; free(q); return true; } }
双链表
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct DNode{ ElemType data; struct DNode *prior; struct DNode *next;}DLinkList;/*---建立双链表---*//*---头插法建表---*/void CreateListF(DLinkList * &L,ElemType a[],int n){ DLinkList *s; int i; L=(DLinkList *)malloc(sizeof(DLinkList)); L->prior=L->next=NULL; for(i=0;i<n;i++) { s=(DLinkList *)malloc(sizeof(DLinkList)); s->data=a[i]; s->next=L->next; if(L->next!=NULL) { L->next->prior=s; } L->next=s; s->prior=L; }}/*---尾插法建表---*/ void CreateListR(DLinkList * &L,ElemType a[],int n){ DLinkList *s,*r; int i; L=(DLinkList *)malloc(sizeof(DLinkList)); r=L; for(i=0;i<n;i++) { s=(DLinkList *)malloc(sizeof(DLinkList)); s->data=a[i]; r->next=s; s->prior=r; r=s; } r->next=NULL;}/*---在双链表L中第i个位置上插入值为e的节点*/bool ListInsert(DLinkList * &L,int i,ElemType e){ int j=0; DLinkList *p=L,*s; while(j<i-1&&p!=NULL) { j++; p=p->next; } if(p==NULL) { return false; } else { s=(DLinkList *)malloc(sizeof(DLinkList)); s->data=e; s->next=p->next; if(p->next!=NULL) { p->next->prior=s; } s->prior=p; p->next=s; return true; }} /*---在双链表L删除第i个节点---*/bool ListDelete(DLinkList * &L,int i,ElemType e) { int j=0; DLinkList *p=L,*q; while(j<i-1&&p!=NULL) { j++; p=p->next; } if(p==NULL) { return false; } else { q=p->next; if(q==NULL) { return false; } e=q->data; p->next=q->next; if(p->next!=NULL) { p->next->prior=p; } free(q); return true; } }int main(){ return 0;}
欢迎关注我的微信个人订阅号
每天多学一点0.0
0 0
- C语言-(单-双)链表
- C语言单选
- C语言单件模式
- 【C语言】翻转单词序
- C语言单例实例
- 单链队列 - C语言
- 【C语言】 链表 单链的建立以及输出
- C 语言指针,单指针和双指针的学习
- C语言 单链队列操作
- C语言设计模式:单件模式
- 单表密码的C语言实现
- 单表密码的C语言实现
- c语言 经单水仙花数算法
- 单例模式 (C语言实现)
- C语言 单链队列操作
- C语言单项链表的实现
- Objective-c语言_单例模式
- 用C语言实现单项链表
- Oracle冷备份数据库及rman恢复实践
- Redhat 6.3提示:configure: error: no acceptable C compiler found in $PATH
- nagios-plugins-1.4.15 客户端 make 时报错 make[2]: *** [check_http.o] Error 1
- Linux启动telnet服务,Windows通过telnet远程登录linux服务器
- HDFS源码分析数据块复制之PendingReplicationBlocks
- C语言-(单-双)链表
- Openssl漏洞 注意‘FREAK’ SSL 漏洞
- 在Eclipse中遇到The type java.lang.Object cannot be resolved. 解决办法
- hibernate连MySql 数据库中遇到个Every derived table must have its own alias
- 第三百四十六章 四相环
- UITableViewCell
- linux 安装libpcap
- null与"" 涉及到的字符串拼接
- 菜鸟Ubuntu下安装Android Studio