链表的几个基本操作,有些错误,大家帮我改改
#include<stdio.h>#include<malloc.h>
#include<string.h>
typedef struct node
{
int date;
struct node *next;
}Snode;
void Creat(Snode *p,int n)/*创一个链表,并赋值。*/
{
int i;
p=(Snode*)malloc(sizeof(Snode));
p->next=NULL;
for(i=0;i<n;i++)
{
scanf("%d",&p->date);
}
}
int getlength(Snode *p)/*求长度*/
{
Snode *q;
int a=0;
q=p->next;
while(q!=NULL)
{ a++;
q=q->next;
}
return a;
}
Snode *get(Snode *p,int i)/*取第I个元素的地址*/
{
int j=0;
Snode *q=p->next;
while(q!=NULL&&j<i)
{
p=p->next;
j++;
}
if(q!=NULL)
{
return q;
}
else
{
cout <<"您输入的I是错误的"<<end1;
return NULL;
}
}
void insnode(Snode *p,int k,int a)/*在第K位插入a*/
{
Snode *q,*s;
s=(Snode*)malloc(sizeof(Snode));
s->date=a;
if(k==0)
{
s->next=p->next;
p->next=s;
}
else{
q=get(p,k-1);
if(q!=NULL)
{
s->next=q->next;
q->next=s;
}
else
{
return 0;
}
}
return 1;
}
void delnode(Snode *p,int b)/*删除第b位的元素*/
{
Snode *q,*t;
if(b==0)
{
t=p->next;
p->next=t->next;
free(t);
}
else
{
q=get(p,b-1);
if(q==NULL)
return 0;
else
{
t=q->next;
q->next=t->next;
free(t);
}
}
return 1 ;
}
void print(Snode *p)/*输出链表*/
{
Snode *q=p->next;
int i;
for(i=0;i<getlength(p);i++)
{
printf("%d",p->date);
}
}
main()/*这当然是主函数了*/
{
Snode *p;
int a=6;
Creat(&p,a);
insnode(&p,4,7);
delnode(&p,4);
println(&p);
}
大家帮帮忙,有几个错误不会改