文档详情

数据结构C语言算法大全分析.doc

发布:2016-06-08约7.37千字共25页下载文档
文本预览下载声明
1) 插入操作 在顺序表L的第i (1=L.length+1)个位置插入新元素e。如果i的输入不合法,则返回false,表示插入失败;否则,将顺序表的第i个元素以及其后的元素右移一个位置,腾出一个空位置插入新元素e,顺序表长度增加1,插入成功,返回true。 bool ListInsert(SqList L, int i, ElemType e){ //本算法实现将元素e插入到顺序表L中第i个位置 if ( i1 || iL.length+1 ) return false; // 判断i的范围是否有效 if(L.length=MaxSize) return false; // 当前存储空间已满,不能插入 for (int j =L.length; j =i; j--) // 将第i个位置及之后的元素后移 L.data[j]=L.data[j-l]; L.data[i-1]=e; //在位置i处放入e L.length++; //线性表长度加1 return true; } 复制纯文本新窗口 bool ListDelete(SqList L,int i, int e){ //本算法实现删除顺序表L中第i个位置的元素 if(i1 || iL.length) return false; // 判断i的范围是否有效 e=L.data[i-1] ; // 将被删除的元素赋值给e for (int j=i; jL.length; j++) //将第i个位置之后的元素前移 L.data[j-1]=L.data[j]; L.length--; //线性表长度减1 return true; } int LocateElem(SqList L, ElemType e){ //本算法实现查找顺序表中值为e的元素,如果查找成功,返回元素位序,否则返回0 int i; for(i=0;iL.length;i++) if(L.data[i]==e) return i+1; // 下标为i的元素值等于e,返回其位号i+1 return 0; //退出循环,说明查找失败 } typedef struct LNode{ //定义单链表结点类型 ElemType data; //数据域 struct LNode *next; //指针域 }LNode, *LinkList; 图2-4? 头插法建立单链表 头插法建立单链表的算法如下: LinkList CreatList1(LinkList L){ //从表尾到表头逆向建立单链表L,每次均在头结点之后插入元素 LNode *s;int x; L=(LinkList)malloc(sizeof(LNode)); //创建头结点 L-next=NULL; //初始为空链表 scanf(%d, x); //输入结点的值 while(x!=9999) { //输入 9999 表示结束 s=(LNode*)malloc(sizeof(LNode) ); //创建新结点 s-datax; s-next=L-next; //重点(如果使用头插法的话) L-next=s; //将新结点插入表中,L为头指针 scanf (%d, x); } //while 结束 return L; } 图2-5? 尾插法建立单链表 尾插法建立单链表的算法如下: LinkList CreatList2(LinkList L){ //从表头到表尾正向建立单链表L,每次均在表尾插入元素 int x; // 设元素类型为整型 L=(LinkList)malloc(sizeof(LNode)); LNode *s, *r=L; //r 为表尾指针 scanf (%d, x); //输入结点的值 while (x!=9999) { //输入 9999 表示结束 s=(LNode *)malloc(sizeof(LNode)); s-data=x; //重点 r-next=s; r=s; //r指向新的表尾结点 scanf (%d, x);
显示全部
相似文档