2 qq 33428266 qq_33428266 于 2016.04.11 13:06 提问

帮我看看下面的程序哪里出错了,刚从数据结构学的单链表,运行不了

就简单的取值 插入 删除 合并
#include
#include
#include
typedef struct LNode
{
int num;
struct LNode *next;
}LNode,*LinkList;

void InitiList(LinkList L)
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
}
void LocateElem(LinkList L)
{
int e;
LNode *p;
p=L->next;
printf("\n\t\t输入要查找的数据:");
scanf("%d",&e);
while(p&&p->num!=e)
p=p->next;
p=p->next;
printf("%d",p->num);
}
void ListInsert(LinkList L)
{

int i;
int e;
LNode *p=L,*s;
int j=0;
printf("\n\t\t输入要插入的结点:");
scanf("%d",&i);
getchar();
printf("\n\t\t输入要插入的数据:");
scanf("%d",&e);
while(p&&(j<i-1))
{
    p=p->next;
    ++j;
}
if(!p||j<i-1)
    exit(0);
s=(LinkList)malloc(sizeof(LNode));
s->num=e;

s->next=p->next;
p->next=s;
}
void ListDelete(LinkList L)
{
int i;
LNode *p,*q;
int j=0;
printf("\n\t\t输入要删除的结点位置:");
scanf("%d",&i);
while((p->next)&&(j {
p=p->next;
++j;
}
if(!(p->next)||j exit(0);
q=p->next;
p->next=q->next;
free(q);
}
void shuru(LinkList L)
oid shuru(LinkList L)
{
LNode *p1,*p2;
int n;
scanf("%d",&n);
while(scanf("%d",&n)!=EOF);
{
p1=(LinkList)malloc(sizeof(LNode));
p1->num=n;
p1->next=NULL;
if(L->next==NULL)
L->next=p1;
else
p2->next=p1;
p2=p1;
scanf("%d",&n);
printf("AAAAAAA\n");
}
}
void hebing(LinkList L,LinkList T)
{
LinkList LC;
LNode *pa,*pb,*pc;

pa=L->next;
pb=T->next;
LC=L;
pc=LC;
while(pa&&pb)
{
if(pa->num<=pb->num)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
free(T);
}
int main()
{
int n,t;
LinkList A;
LinkList B;
LinkList L;
LinkList T;
InitiList(A);
InitiList(B);
shuru(A);
shuru(B);
printf("\n\t\t选择需要操作的链表:1.A 其它.B");
scanf("%d",&t);
if(t=1)
{L=A;
T=B;}
else
L=B;
T=A;
printf("\n\t\t操作选择:");
printf("\n\t\t1:查找");
printf("\n\t\t2:插入");
printf("\n\t\t3:删除");
printf("\n\t\t4:合并");
printf("\n\t\t5:退出");
scanf("%d",&n);
for(;;)
{
switch(n)
{
case 1:LocateElem(L);
case 2:ListInsert(L);
case 3:ListDelete(L);
case 4:hebing(L,T);
case 5:exit(0);

 }
 }
 free(A);
 free(B);
 return 0;

}

3个回答

lbcab
lbcab   2016.04.11 13:33

你确定你的代码能编译成功?

void shuru(LinkList L)
oid shuru(LinkList L)
这是什么意思?

while((p->next)&&(j { //你不觉得while缺点啥?
p=p->next;
++j;
}
if(!(p->next)||j exit(0); //if是不是缺点啥?
还有 case 下面是不是应该加break?

...............

ajfly0622
ajfly0622   2016.04.11 14:08

这个问题有点大,这不是数据结构没学好,这是C语言没学好啊!楼上说的挺好,语法的问题吧!

qq423399099
qq423399099   Ds   Rxr 2016.04.11 14:49

楼主你重新发一下代码,放在代码标签里,直接copy上来的话有的地方不太对的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!