2.19 已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一高效的算法,删除表中所有值大于mink且小于maxk的元素(若表中存在这样的元素),同时释放被删结点空间,并分析你的算法的时间复杂度(注意: mink和maxk是给定的两个参变量,他们的值可以和表中相同,也可以不同) 2.22 试写一个算法,实现顺序表的就地逆置,即利用原表存储空间将线性表(a1, a2,…, an)逆置为(an, an-1,, a2 , a1)。 2.38 设有一个双向循环链表,每个结点中除有prior,data和next三个域外,还增设了一个访问频度域freq。在链表被起用之前,频度域freq的值均初始化为零,而每当对链表进行一次locate(L,x)的操作后,被访问的结点(即元素值等于x的结点)中的频度域freq的值便增1,同时调整链表中结点之间的次序,使其按访问频度非递减的次序顺序排列,以便始终保持被频繁访问的结点总是靠近表头结点。试编写符合上述要求的locate操作的算法。 2.39 约瑟夫(Josephus)环问题:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,
2022-09-24 22:06:58 34.33MB 数据结构
1
#include #include #include #define TURE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int ElemType; #define LIST_INIT_SIZE 100 //初始容量 #define LISTINCREMENT 10 //空间增量 typedef struct{ ElemType *elem; //存储空间基址 int length; //表长,元素个数 int listsize; //表容量,空间大小 }SqList; Status InitList_Sq(SqList &L) { //构造一个空的线性表L L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)) ; if(!L.elem) exit(OVERFLOW); L.l
2022-07-11 14:06:05 29KB 文档资料
printf(" *******************************************************\n"); printf(" * 多项式操作程序 *\n"); printf(" * *\n"); printf(" * A.输出链表(La) B.逆序输出(La) *\n"); printf(" * *\n"); printf(" * C:查找元素(La) D:删除元素(La) *\n"); printf(" * *\n"); printf(" * E:插入元素(La) F:排序(有小及大)(La) *\n"); printf(" * *\n"); printf(" * G:就地逆置(La) H:删除x-y的元素(La) *\n"); printf(" * *\n"); printf(" * I:合并(删除相同项) J:合并(保留相同项) *\n"); printf(" * *\n"); printf(" * K:求两链表交集 L:退出程序 *\n"); printf(" * *\n"); printf(" *******************************************************\n");
1