数据结构之线性表
答案:2 悬赏:0 手机版
解决时间 2021-07-31 06:03
- 提问者网友:萌卜娃娃
- 2021-07-31 02:22
#include<stdio.h>
typedef struct node{
int data;
struct node *next;}Lnode;
Lnode *create(int tag)
{ Lnode *p,*h=NULL;
printf("input x:");
scanf("%d",&x);
while(x!=tag)
int x;
{
p=(Lnode*)malloc(sizeof(Lnode));
p->data=x;
p->next=h;
h=p;
scanf("%d",&x);
}
return h;
}
void printd(Lnode *h)
{
while(h)
{
printf("%d ",h->data);
h=h->next;
}
}
Lnode *revelist(Lnode *h)
{ Lnode *p,*q=NULL;
while(h)
{
p=h->next;
h->next=q;
q=h;
h=p;}
return q;
}
void main()
{
Lnode *ha,*hb;
int tag;
printf("\n input endtag=");
scanf("%d",&tag);
ha=create(tag);
printf("This list is:\n");
printd(ha);
ha=revelist(ha);
printf("\nrevelist is:\n");
printd(ha);
getch();
}
麻烦!!!图解!!!!!说明其建立 和 输出 的过程(指针的变化过程) 本人只有80多分 不要少啊
最佳答案
- 五星知识达人网友:山河有幸埋战骨
- 2021-07-31 03:44
小仓优子!!
#include<stdio.h>
typedef struct node{
int data;
struct node *next;}Lnode;
Lnode *create(int tag)
{ Lnode *p,*h=NULL;
printf("input x:");
scanf("%d",&x);
while(x!=tag)
int x;
{
p=(Lnode*)malloc(sizeof(Lnode));
p->data=x;
p->next=h;
h=p;
scanf("%d",&x);
}
return h;
}
void printd(Lnode *h)
{
while(h)
{
printf("%d ",h->data);
h=h->next;
}
}
Lnode *revelist(Lnode *h)
{ Lnode *p,*q=NULL;
while(h)
{
p=h->next;
h->next=q;
q=h;
h=p;}
return q;
}
void main()
{
Lnode *ha,*hb;
int tag;
printf("\n input endtag=");
scanf("%d",&tag);
ha=create(tag);
printf("This list is:\n");
printd(ha);
ha=revelist(ha);
printf("\nrevelist is:\n");
printd(ha);
getch();
}
全部回答
Status ListTraverse( SqList L, Status (*visit)( ElemType e ) )
{ //依次对L的每个数据元素调用visit()函数
//,一旦visit()失败,则操作失败
int i;
for( i = 1;i <= L.length;i++ )
if( !visit( L.elem[i-1] ) )
return ERROR ;
return OK ;
}
void ListUnion( SqList *La,SqList Lb )
{ //将所有在线性表Lb中但不在La中的数据元素插入到La中
size_t La_len ,Lb_len;
ElemType *e = 0;
size_t i;
La_len = ListLength( *La );//求线性表的长度
Lb_len = ListLength( Lb );
for( i =1;i <= Lb_len;i++ )
{ GetElem( Lb,i,e );//取Lb中第i个数据元素赋给予e
//La中不存在和e相同的数据元素,则插入之
if( !LocateElem( *La,*e,equal ) )
ListInsert( La,++La_len,*e );
}
}
void MergeList( SqList La,SqList Lb,SqList *Lc )
{ //已知线性表La和Lb中的数据元素按值非递减排列
//归并联La和Lb得到新的线性表Lc,Lc的数据元素也按值非递减排列
ElemType *pa,*pb,*pc,*pa_last,*pb_last;
pa = La.elem;
pb = Lb.elem;
Lc->listsize = Lc->length = La.length + Lb.length;
pc = Lc->elem = (ElemType*)malloc( Lc->listsize * sizeof(ElemType) );
if( !Lc->elem ) exit (OVERFLOW);
pa_last = La.elem + La.length - 1;
pb_last = Lb.elem + Lb.length - 1;
while( pa <= pa_last && pb <= pb_last )
{
if( *pa <= *pb )
*pc++ = *pa++;
else
*pc++ = *pb++;
}
while( pa <= pa_last ) *pc++ = *pa++;
while( pb <= pb_last ) *pc++ = *pb++;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯