导航菜单
首页 >  数据结构哪几章是考研重点知识  > 数据结构重点代码总结(考研)

数据结构重点代码总结(考研)

线性表 顺序表的定义 #define MaxSize 50typedef struct{ElemType data[MaxSize];int length;}SqList; 顺序表插入

在下标为i的位置插入元素e:

bool ListInsert(SqList &L, int i, ElemType e){if(iL.length||L.length==MaxSize)//i取0到lengthreturn false;for(int j=L.length-1; j>=i; --j)L.data[j+1]=L.data[j];//从后往前,逐个将元素后移一个位置L.data[i]=e;++(L.length);return true;} abcdef0123456 顺序表删除

删除下标为i的元素,并返回元素值e:

bool ListDelete(SqList &L, int i, ElemType &e){if(iL.length-1)return false;e=L.data[i];for(int j=i; jnext=s;//r所在的next指向新建的s结点r=r->next;}r->next=NULL;} 合并链表

A,B是两个带头结点的单链表,其中元素递增有序,设计一个算法,将A,B归并成一个按元素值非递减有序的链表C,C由A和B中的结点组成。

void Merge(LNode *A, LNode *B, LNode *&C){LNode *p=A->next;LNode *q=B->next;LNode *r;//r始终指向C的终端结点C=A;C->next=NULL;free(B);r=C;while(p!=NULL && q!=NULL){if(p->datadata){r->next=p;p=p->next;r=r->next;}else{r->next=q;q=q->next;r=r->next;}}r->next=NULL;if(p!=NULL)//将剩余结点

相关推荐: