1、将以顺序表A中的元素逆置例如原来顺序表A中的元素是10第二章 线性表1、将以顺序表A中的元素逆置。例如原来顺序表A中的元素是100,90,80,70,60,50,40,逆置后为40,50,60,70,80,90,100。算法所用的辅助空间要尽量可能地少。用非形式算法描述,并编写C语言程序。答:描述:该顺序表A有N个元素,分别将第1个与第N个对换,第2个与第N1个对换,依此类推第i个与第Ni个对换。C语言程序:#include #include int main(void) char elem100,t; int i, n, t; printf(Please input number(1100)
2、:); /*输入要输入的元素的个数*/ scanf(%d, &n); printf(*n); printf(Please input element:n);/*输入元素*/ flushall(); for(i=0; in; +i) scanf(%c, &elemi); for(i=0; in; +i) printf(%c , elemi); printf(n); for(i=0; in/2; +i) t = elemi; elemi = elemn-i-1; elemn-i-1 = t; for(i=0; in; +i) printf(%c , elemi); getch(); return
3、0; 2、写一算法输出已知顺序表A中元素的最大值和次最大值。用非形式算法描述,并编写C语言程序。 #include #include void printFstAndSndValue(SeqList sq) int firstmax = 0; int secondmax = 0; int i = 0; if(sq.last = -1) printf(“List is empty!”); return;firstmax = sq.data0;secondtmax = 0; for(i=1; i=sq.last; +i) if(firstmax sq.datai) firstmax = sq.da
4、tai;else if(secondmax sq.datai) scondmax = sq.datai;printf(“%d %d”, firstmax, secondmax);3、设一顺序表中元素值递增有序。写一算法,将元素x插到表中适当地位置,并保持顺序表地有序性,且分析算法地时间复杂度。算法的C语言实现:int *Insert_SeqList(SeqList *L, datatype x) int i, j, t = 1; for(i=0; ilast; +i) if(L-datai datai = x) for(j=L-last; ji; -j) L-dataj = L-dataj-1
5、; L-datai = x; t = 0; break; if(t 0) L-datai+1 = x; 时间复杂度:O(n)。4、设有两个安元素值递增有序的顺序表A和B(单链表A和B),编一程序将A表和B表归并成一个新的递增有序的顺序表C(单链表),值相同的元素均保留在C表中。C程序:#include #include int main(void) int A8=1,3,4,6,8,12,34,37; int B9=14,16,17,19,26,30,41,88,91; int C17; int i = 0;int j = 0;int k = 0; printf(A array:); for(
6、i=0; i8; +i) printf(%d , Ai); printf(n); printf(B array:); for(j=0; j9; +j) printf(%d , Bj); printf(n); i = 0; j = 0; while(i8) & (j9) if(Ai Bj) Ck+ = Ai+; else if(Bj Ai) Ck+ = Bj+; else Ck+ = Ai+; while(i 8) Ck+ = Ai+; while(j 9) Ck+ = Bj+; printf(C array:); for(k=0; knext = s;/2 p-next = p-next-ne
7、xt;/3 p-next = s-next;/4 s-next = p-next;/5 s-next = L;/6 s-next = p;/7 s-next = NULL;/8 q = p;/9 while(p-next != Q) p = p-next;/10 while(q-next != NULL) q = q-next;/11 p = q;/12 p = L;/13 L = s;/14 L = p;6、已知p结点是某双向链表的中间结点,试从下列提供的语句中选出合适的语句序列。(1)在p结点后插入s结点:/7 /12 /3 /6(2)在p结点前插入s结点:/13 /8 /5 /4(3)删
8、除p结点的直接后继结点:q = p-next; p-next = q-next; q-next-prior = q-prior; free(q);(4) 删除p结点的直接前趋结点:q = p-prior;p-prior = q-prior;q-prior-next = q-next; free(q);(5)删除p结点:p-prior-next=p-next; p-next-prior=p-prior; free(p);7、设有两个线性表A和B皆是单链表存储结构。同一个表中的元素各不相同,且递增有序。写一算法,构成一个新的线性表C,使C为A和B的交集,且C中的元素也递增有序。void new(L
9、inkList A LinkList B) LinkList C; LNode *a, *b, *c, *ap, *bp; a = A-next; b = B-next; c = C-next; while(a-next!=NULL) & (b-next!=NULL) c = (LNode *)malloc(sizeof(LNode); if(a-data data) c-next = a; c = c-next; ap = a-next; free(a); a = ap; else c-next = b; c = c-next; bp = b-next; free(b); b = bp; w
10、hile(a-next != NULL) c = (LNode *)malloc(sizeof(LNode);c-next = a;c = c-next;ap = a-next;free(a);a = ap; while(b-next != NULL) c = (LNode *)malloc(sizeof(LNode);c-next = b;c = c-next;bp = b-next;free(b);b = bp;c-next = NULL;return 0;8、删除线性表a中第i个元素起的k个元素。Status DeleteK(SeqList &a,int i,int k)if(i1) | (ka.length) return INFEASIBLE; for(count=1; i+count-1 va.listsize) return ERROR; +va.length;for(i=va.length-1; va.elemix&i=0; -i) va.elemi+1 = va.elemi; va.elemi+1 = x;return OK;/*Insert_SqList */10、比较字符表A和B,并用返回值表示结果,值为正,表示AB;值为负,表示Anext; p
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1