数据结构c语言版的一些基本操作.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构c语言版的一些基本操作

#include stdio.h #include stdlib.h #include malloc.h #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #include conio.h #include common.h #include linklist.h #define ElemType char struct Node /*结点类型定义*/ { ElemType data; struct Node * next; }; typedef Node *LinkList; /* LinkList为结构指针类型*/ void InitList(LinkList *l)/*算法2.5 对单链表进行初始化*/ { *l=(LinkList)malloc(sizeof(Node)); /*申请结点空间*/ (*l)-next=NULL; /*置为空表*/ } void ClearList(LinkList L) //清空链表(保留头结点) { Node *p; p=L-next; while(p!=NULL) { L-next = p-next; free(p); p=L-next; } } void DestroyList(LinkList *l) //销毁链表(先清空,再销毁头结点,头结点设置为空) { Node *p; p=*l; ClearList(p); l=NULL; free(p); } int EmptyList(LinkList L) { if(L-next==NULL) return TRUE; else return FALSE; } void ShowList(LinkList L) { Node *p; p=L-next; while(p!=NULL) { printf(%c\n,p-data); p=p-next; } } void CreateFromHead(LinkList L) /*算法 2.6 通过键盘输入表中元素值,利用头插法建单链表*/ { Node *s; char c; int flag=1; while(flag) /* flag初值为1,当输入$时,置flag为0,建表结束*/ { c=getchar(); if(c!=$) { s=(Node*)malloc(sizeof(Node)); /*建立新结点s*/ s-data=c; s-next=L-next;/*将s结点插入表头*/ L-next=s; } else flag=0; } } void CreateFromTail(LinkList L) /*算法 2.7 通过键盘输入表中元素值,利用尾插法建单链表*/ { Node *r, *s; char c; int flag =1; /*设置一个标志,初值为1,当输入$时,flag为0,建表结束*/ r=L; /*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/ while(flag) /*循环输入表中元素值,将建立新结点s插入表尾*/ { c=getchar(); if(c!=$) { s=(Node*)malloc(sizeof(Node)); s-data=c; r-next=s; r=s; } else { flag=0; r-next=NULL; /*将最后一个结点的next链域置为空,表示链表的结束*/ } } } Node * Get (LinkList L, int i) /*算法2.8 在带头结点的单链表L中查找第i个结点,若找到(1≤i≤n),则返回该结点的存储位置; 否则返回NULL*/ { int j; Node *p; p=L; j=0; /*从头结点开始扫描*/ while ((p-next!=NULL)(ji)) { p=p-next; /* 扫描下一结点*/ j++; /* 已扫描结点计数器 */ } if(i == j) return p; /* 找到了第i个结点 */ else return NULL; /* 找不到,i≤0或in */ } Node *Locate( LinkList L,ElemT

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档