数据结构的题目!!求大神!!!

题目:已知带头结点的动态单链表L中的结点是按整数值递增排列的,试写一算法将值为X的结点插入表L中,使L任有序。下面是我写的程序,有错,我不会改了求大神帮忙!求解释!!!#... 题目:已知带头结点的动态单链表L中的结点是按整数值递增排列的,试写一算法将值为X的结点插入表L中,使L任有序。
下面是我写的程序,有错,我不会改了 求大神帮忙!求解释!!!
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
//描述单链表
typedef int datatype
typedef struct node
{datatype data;
struct node *next;
}linklist;

//用尾插法创建单链表
void creatlistr(*q)
{char ch;
linklist *head,*s,*r;
*head=NULL;
ch=getchar();
while(ch!="$")
{s=malloc(sizeof(linklist));
s->data=ch;
if(head==NULL)
head=s;
else
r->next=s;
r=s;
ch=getchar();
}
}
//输出
void list(linklist *q)
{linklist *p;
p=q->next;
whlie(p!=NULL)
{printf("%d",p);
p=p->next;
}
}
//比较插入的关键语句
void insert(linklist *head,int x)
{linklist *p;
p=head;
while(1){
if(p==head)
if(p->next->data>x)
break;
else
p=p->next;
else
if(p->next==NULL)
break;
else
p=p->next;
}
linklist *q=malloc(sizeof(linklist))
q->data=x;
q->next=p->next;
p->next=q;
}
//主函数
void main()
{linklist *x;

printf("输入一个单链表");
creatlistr(x);
printf("插入一个数a");
insert(x,5);
list(x);

}
展开
 我来答
百度网友49d341c
2012-05-19 · 超过17用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:41万
展开全部
你的定义就有点问题,我给你一个链表基本操作的程序代码吧,希望对你有所帮助
#include <stdio.h>
#include<stdlib.h>

typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode;
typedef LNode *LinkList;
//****************************************************************************

LinkList CreateList()//头插入法 建立带头节点的链表
{
LinkList L;
LinkList P;
int x;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;//建立空链表
printf("请输入第一个元素并以0作为输入结束的标志\n");
scanf("%d",&x);
while(x!=0)//以输入0作为输入结束标志
{
P=(LinkList)malloc(sizeof(LNode));
P->data=x;
P->next=L->next;
L->next=P;
scanf("%d",&x);
}
return L;
}

int Listlength_L(LinkList L)//求表长
{
LinkList P;
P=L;
int i=0;
while(P->next!=NULL){i++;P=P->next;}
return i;
}

LinkList Get_LinkList(LinkList L,int i)//按序号查找
{
LinkList P=L;
int j=0;
while(j<i&&P->next!=NULL)
{j++;P=P->next;}
if(i==j)return P;
else return NULL;
}

LinkList Locate_LinkList(LinkList L,ElemType e)//按值查找
{
LinkList P=L;
while(P->next!=NULL&&P->data!=e)P=P->next;
return P;
}

LinkList ListInsert1(LinkList L,int i,ElemType e)//在第i个节点前插入新元素e
{
int j=0;
LinkList p,s;
s=(LinkList)malloc(sizeof(LinkList));//切记 一定要为s分配内存
s->data=e;
p=L;
while(p!=NULL&&j<i-1){j++;p=p->next;}
//if(p==NULL||j>i+1){printf("参数i有误");exit(1);}
s->next=p->next;
p->next=s;
return L;
}

LinkList ListInsert2(LinkList L,int i,ElemType e)//在第i个节点后插入新元素e
{
int j;
LinkList p,s;
s=(LinkList)malloc(sizeof(LinkList));
s->data=e;
p=L->next;
if(i==0)
{
s->next=L->next;L->next=s;
}
else
{
for(j=0;j<i-1;j++)p=p->next;
if(p==NULL||j>i+1){printf("参数i有误");exit(1);}
s->next=p->next;
p->next=s;
}

return L;
}
LinkList ListDelete(LinkList L,int i,ElemType e)//删除第i个节点,把删除的值放在e中
{
int j;
LinkList p;
p=L;
for(j=0;j<i-1;j++)p=p->next;
if(p==NULL||j>=i){printf("参数i有误");exit(1);}
e=p->next->data;
p->next=p->next->next;
return L;
}

void display(LinkList L)//遍历链表L
{
LinkList p;
p=L->next;
while(p){printf("%d ->",p->data);p=p->next;}
printf("\b\b \n");
}

int main()
{

}
追问
不对啊   不可以运行....还有我那个怎么那么多错啊...帮帮忙
追答
这些代码在我的机器都是运行过的,没有任何问题。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式