发布时间 : 星期四 文章数据结构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->data
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 -