当前位置:首页 > 数据结构练习题 第二章 线性表 习题及答案
p->next=C;C=p; } if(A= =NULL) A=B; while(A!=NULL) {p=A;A=A->next; p->next=C;C=p;} return(C); } 5、 分析:(1)当有序表A、B均非空时,依次分别从A、B表头部取下结点,插入C表中。 (2)当A、B两表有一个为空表时,将非空表插入到C表尾部。 设A,B,C均为带头结点的单链表 lklist HB_lklist(lklist A,lklist B) { C=A; A=A->next;B=B->next; //去除头结点 While((A!=NULL)&&(B!=NULL)) {p->next=A;p=p->next;A=A->next; p->next=B;p=p->next;B=B->next; } if((B= =NULL)&&(A!=NULL)) p->next=A; else if((A= =NULL)&&(B!=NULL)) p->next=B; Return(c); } 6、 分析:从有序表的尾部开始依次取元素与插入元素比较,若大于插入元素,此元素后移一位,再取它前面一个元素重复上述步骤;则将待插入元素插入。 Void CR(datatype A[],datatype X,int elenum) { i=elenum-1; while((i>=0)&&Xnext; while((p!=NULL)&&(p->data
s=malloc(size);s->data=s; } 8、 (1)顺序表 分析:将顺序表的第一个元素与最后一个元素互换,第二个元素与倒数第二个元素互换。 Void NZ_sqlist(sqlist A) {for{i=0;i<((A.last-1)/2);i++} {x=A.data[i]; A.data[i]=A.data[A.last-i-1]; A.data[A.last-i-1]=x; } } (2)单链表 分析:将原单链表的元素依次取出,再插入另一个单链表的头部。 设该单链表为无头结点,s为指向表的第一个结点的指针。 Void NZ_lklist(lklist s) {p=NULL; /*p指向当前结点的前趋结点*/ /*将原单链表的元素依次取出到q*/ /*再插入另一个单链表p的头部*/ while(s!=NULL) { q=s;s=s->next; q->next=p;p=q; } s=p; /*s指向新单链表的第一个结点*/ } 9、 分析:A与B的交是指A与B的相同部分元素,即那些在A中出现又在B中出现的元素。由于A、B是有序表,故从表头开始依次比较当前指针所指元素的值是否相同,若相同,在C表中插入该元素,然后将两个表的指针后移,否则指向较小元素的指针后移。重复上述步骤,直到A,B表中有一个表到表尾。 (1)顺序表 sqlist HDZ_sqlist(sqlist A,sqlist B) { t=0;j=0;k=0; while((t<=A.last-1)&&(j<=B.last-1)) switch{ case A.data[i]
lklist HDZ_lklist(lklist A,lklist B) { C=initiate_lklist(); r=C;p=A->next;q=B->next:; While ((p!=null)&&(q!=null)) Switch { case p->data
pb= B ->next;pc= C ->next; while ((pb!=null)&&(pc!=null)) switch { case pb->data
共分享92篇相关文档