已结贴√
问题点数:20 回复次数:4
c语言 单链表的创建 删除 插入 排序 求调试 、
#include
#include
typedef struct Node
{
int data;
struct Node * next;
} Node,* LinkList;
void InitList(LinkList * L,int e); //charu
void GreatFormTail(LinkList * L); //chuanjian
void Out(LinkList * L); //shuchu
int DelList(LinkList * L); //shanchu
void main()
{ Node * L;
//LinkList L;
int m=0,i=0,e=0;
// LinkList L;
printf("请输入您要进行的操作的序号:");
printf("1 输入数据\n 2 插入数据\n 3 删除数据");
scanf("%d",&m);
switch( m )
{ case 1: GreatFormTail( L ); break;
case 2: printf("输入一个整形数据:");
scanf("%d",&e);
InItList( L , e); break;
case 3: DelList( L); break;
default: printf("输入有误,请重新输入");
}
}
//------------------------------------------------------------ 创建------------------------
void GreatFormTail(Node * L)
{ Node * r,* s;
int flag=1,c=0;
r=L;
while(flag)
{ printf("请输入整形数据,按ENTER结束。");
scanf("%d",&c);
if(c!='\r')
{ s=(Node *)malloc(sizeof(Node));
s->data=c;
r->next=s;
r=s;
}
else
{
flag=0;
r->next=NULL;
}
}
}
//----------------------------------------------插入---------------------------------
int InItList(Node * L,int e ) //插入
{ Node * pre, * s;
s=L->next;
while(s!=NULL)
{
if(edata))
{ pre=(Node *)malloc(sizeof(Node));
pre->data=e;
pre->next=s->next;
s->next=pre;
}
s=s->next;
}
return e;
}
//------------------------------删除-----------------------
void DelList(Node * L)
{ Node * pre,* r;
int i=0,k=1,e=0;
pre=L;
printf("请输入你要删除的数据序号:");
scanf("%4d",&i);
while(pre->next!=NULL&&k
{ pre=pre->next;
k=k+1;
}
if(!(pre->next))
{ printf("删除的位置不合法!");
//return 0;
}
r=pre->next;
pre->next=r->next;
e=r->data;
free(r);
}
//------------------------------输出且排序----------------------------
void Out(Node * L)
{
Node * s;
Node * b;
Node * c;
Node * f;
int a=0,j=0,k=0;
s=L;
s=s->next;
b=(Node *)malloc(sizeof(Node));
c=(Node *)malloc(sizeof(Node));
while(s->next!=NULL)
{
s=s->next;
k++;
}
for(j=0;j
{
for(a=0;a
{
b->data=s->data;
s=s->next;
if(s->datadata)
{
c->data=b->data;
b->data=s->data;
s->data=c->data;
}
else break;
}
s=s->next;
while(s!=NULL)
{
printf("%4d",s->data);
s=s->next;
}
}
}