数据结构c语言版试题大全(含答案) 联系客服

发布时间 : 星期四 文章数据结构c语言版试题大全(含答案)更新完毕开始阅读13adb34dc850ad02de804116

6、void Dels(LinkList *&head) {

p=head,q=head->next; while(q->next!=null) {

if(p->next->data>q->next->data) p=q; q =q->next; }

p->next =p->next ->next; }

7、void Reverse(LinkList *&head) {

p=head;

q=p->next; //q指向p的后继结点,仅为当前结点 if(q=null)

return(p); //仅有一个结点

p->next=null; //原链表的首结点位新链表的尾结点 if(q->next==null) //仅有两个结点 {

q->next=p; return(q); }

r=q->next;

while(r->next!=null) {

q->next=p; //实现逆置 p=q; q=r; r=r->next; }

q->next=p; return(r); }

8、Typedef Elemtype int; Typedef struct Lnode {

Elemtype data; Struct LNode *next; }Lnode,*LinkList;

#include

- 21 -

LinkList creatlist()

{//建立单链表

LinkList head,r,s; ElemType x;

head=(LinkList)malloc(sizeof(LNode)); //建立单链表头结点 r=head;

printf(“输入系列整数,0标志结束\\n”); scanf(“&d”,&x); while(x)

{//x=0 则退出 while 循环

s=(LinkList)mslloc(sizeof(LNode)); s->data=x; r->next=s; r=s;

scanf(“%d”,&x); )//while

r->next=NULL;

s=head; //删除头结点 head=head->next; free(s);

return(head); }

status ListFind(LinkList L,Elemtype e)

{//查找元素e LinkList p; p=L;

while(p&&p->data!=e) p=p->next; If(p) return FALSE; else return TRUE; }

void Lis

9、Typedef Elemtype int; Typedef struct Lnode {

Elemtype data; Struct LNode *next; }Lnode,*LinkList;

void MergeList(LinkList Ha,LinkList Hb,LinkList &Hc) {

LinkList p,q,r,s;

- 22 -

Hc=(LinkList)malloc(sizeof(Lnode)); r=Hc;p=Ha;q=Hb; while(p&&q) {

s=(LinkList)malloc(sizeof(Lnode)); r->next=s;r=s;

if(p->datadata){s->data=p->data;p=p->next;} else if(p->datadata){s->data=q->data;q=q->next;} else {s->data=p->data;p=p->next;q=q->next;} }

while(q) //把Q及之后的结点复制到Hc {

s=(LinkList)malloc(sizeof(Lnode)); s->data=q->data; r->next=s;r=s; q=q->next; }

while(p)//把P后的结点复制到Hc {

s=(LinkList)malloc(sizeof(Lnode)); s->data=p->data; r->next=s;r=s; p=p->next; }

r->next=NULL; s=Hc;Hc=Hc->next; free(s);//删除头结点 }

10、Void partition(LinkList &a,LinkList &b) {

LinkList r,p,q; p=a->next;

b=(LinkList)malloc(sizeof(Lnode)); q=b;

While(p->next) {

r=p->next;

p->next=r->next; r->next=NULL; q-next=r; q=q->next; p=p->next; }

- 23 -

}

11、//p扫描单链表。*p的值域=其后结点的值域,删除后者 void Dels(LinkList *& head) { LinkList *p=head->next; while(p->next!=null)

{ if(p->data==p->next->data) /改重复值的结点

{ q=p->next; /q指向返回重复结点 p->next=q->next; free(q); }

else p=p->next; } }

12、void Mergelist L(LinkList&L1,LinkList&L2) {LinkList *p,*q,*r,*u,*c; p=L1->next; q=L2->next;

c=L1 /c为合并后新链表的表头指针 r=L1

while(p!=Null)&&(q!=Null) Swich

{case p->data>q->data; /*是L2表中小者加入C表尾部 {u=q->next; /*u为暂存指针,防止链断 r->next=q; r=q;

q->next=p; q=u; }

case p->data<=q->data /*将A表中小者加入到C表尾部 { r=p;

p=p->next; } }

if(q!=Null) /如果A表已空时将B表为结束部分链接结束部分->cb表尾部 r->next=q; return(c); }

13、typedef struct slnode { Elemtype data;

struct slnode *next;

- 24 -