网站大量收购独家精品文档,联系QQ:2885784924

《数据结构课本算法实现》.doc

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线性结构 一 类型定义 1 顺序表# define MAXSIZE 100typedef struct node typedef struct{ ElemType data; { ElemType data [MAXSIZE];struct node * next;int length;}SLink; }SqList; 2 单链表 3双链表 typedef struct node { ElemType data;struct node *prior,*next; }dlink; 二 基础要点 1单链表2双链表 三 算法 1 删除顺序表中重复元素 void delsame( int A[], int count ) { int i, j, k;if( N 1 ){ j = 1;for( i =1; i N; i++ ){ k = 0;while( k j A[k] != A[i] ) k++;if( k = j )A[j++] == A[i];}A[j] == ‘\0’} } 2 给无序表建有序索引表 typedef struct indexelem { KeyType key; //关键字 intsn; //序号 }IndexType;//索引项 IndexType idx[1...m]; //索引表 DataType data[1...m]; //原顺序表 for( i = 1; i =m; i++ ) { j = i - 1; while( j 0 idx[j].key data[i].key ) //把大于data[i].key的所有idx[j].key后移 { idx[j+1] = idx[j]; j--; } idx[j+1].key = data[i].key;//插入data[i].key至idx中,并记下其序号i idx[j+1].sn = i; } 3 逆置单链表 void reverse( LinkList H ){ SNode *p, *temp;P = H-next;H-next = NULL;while( p ){ temp = p;p = p-next;temp-next = H-next;H-next = temp;} } void reverse( LinkList H ){ SNode *p, *q, *temp;P = H-next;q = NULL;while( p ){ temp = p;p = p-next;temp-next = q;q = temp;}H-next = q; } 4拆分单链表 decompese( SNode *L,SNode *ha,SNode *hb,SNode *hc ) {SNode *temp,*p; p = L; ha = (SNode*)malloc(sizeof(SNode)); hb = (SNode*)malloc(sizeof(SNode)); hc = (SNode*)malloc(sizeof(SNode)); ha-next = ha; hb-next = hb; hc-next = hc; while( p ) { if( (p-data = ‘A’ p-data = ‘Z’)||(p-data = ‘a’ p-data = ‘z’) ){ temp = p;p = p-next;temp-next = ha-next;ha-next = temp;} else if(p-data = ‘0’ p-data = ‘9’ ) {temp = p;p = p-next;temp-next = hb-next;hb-next = temp; } else {temp = p;p = p-next;temp-next = hc-next;hc-next = temp; } } } 5 删除单链表重复元素 void delete(LinkList H) { SNode *p,*q,*r;P = H-next;while( p != NULL ){ q=p; while ( q-next ){ if ( q-next-data == p-data ){ r = q-next;q-next = r-next;free(r);}else q = q-next; } p = p-next; } } 6 合并单链表 LinkList merge(LinkList A,LinkList B){ LinkList C; SNode *p,*q;P = A-next; q = B-ne

文档评论(0)

lipinting + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档