|
1鱼币
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
/*-------------------------------创建结构类型----------------------------------*/
typedef struct Node
{
int data ;
struct Node * pNext ;
}NODE , * PNODE ;
/*-----------------------------------------------------------------------------*/
/*---------------------------------创建函数------------------------------------*/
PNODE creat_list(void) ;
void shuchu(PNODE phead);
int geshu (PNODE phead);
void paixu(PNODE phead);
void charu(PNODE phead);
/*-----------------------------------------------------------------------------*/
/*---------------------------------主函数---------------------------------*/
int main (void)
{
PNODE phead = NULL ;
int val ;
int len ;
phead =creat_list();
shuchu(phead);
len = geshu (phead);
printf ("有%d个节点\n",len);
paixu(phead);
shuchu(phead);
charu(phead);
shuchu(phead);
return 0;
}
/*------------------------------------------------------------------------*/
/*-----------------------------创建单链表函数------------------------------------*/
PNODE creat_list(void)
{
int i ;
int len ;
int val ;//临时存储的数据
PNODE phead = (PNODE)malloc(sizeof(NODE));
if ( NULL == phead )
{
printf(" 创建失败 \n");
exit(-1);
}
PNODE pTail = phead ;
printf("输入要生成节点的个数 len = \n");
scanf ("%d",&len);
for(i = 0 ; i < len ; i ++)
{
printf("请输入第%d个节点的值: ", i+1);
scanf("%d",&val);
PNODE New =(PNODE)malloc(sizeof(NODE));
if (NULL==New)
exit(-1);
New ->data = val;
pTail ->pNext = New ;
New ->pNext =NULL;
pTail = New ;
}
return phead ;
}
/*------------------------------------------------------------------------*/
/*-------------------------------输出函数-----------------------------------*/
void shuchu(PNODE phead)
{
PNODE p = phead->pNext ;
while (p != 0)
{
printf("%d\n",p->data);
p = p->pNext;
}
return;
}
/*------------------------------------------------------------------------*/
/*----------------------------------节点个数---------------------------------*/
int geshu (PNODE phead)
{
PNODE p = phead->pNext ;
int i = 0;
while (p != 0)
{
i= i+ 1;
p = p->pNext;
}
return i ;
}
/*------------------------------------------------------------------------*/
/*---------------------------------排序---------------------------------*/
void paixu(PNODE phead)
{
int i = 0 ;
int j = 0 ;
int len = 0;
int t;
PNODE p ,q ;
len = geshu (phead) ;
for (i = 0 ,p=phead ->pNext;i < len - 1 ;i ++,p=p->pNext)
for (j =i+1,q=p->pNext ; j< len ;j++,q=q->pNext)
{
if( p->data > q->data/*a[i]>a[j]*/)
{
t=p->data;
p->data=q->data;
q->data=t;/*t=a[i];
a[i]=a[j];
a[j]=t;*/
}
}
}
/*------------------------------------------------------------------------*/
/*------------------------------插入----------------------------------------*/
void charu(PNODE phead)
{
PNODE p = phead;
int a;
int len;
int val ;
len = geshu (phead) ;
printf("请输入要在第a个节点后插入一个节点 a = ");
scanf("%d",a);
for(a = 1 ; a <= len ; a++ )
p = p->pNext;
PNODE pNew =(PNODE)malloc(sizeof(NODE));
printf("请输入新节点的数据 val =");
scanf ("%d",val);
if(NULL!=p)
{
pNew->pNext=p->pNext;
p->pNext=pNew;
}
else if (NULL == p)
{
pNew->pNext=NULL;
p->pNext=pNew;
}
}
/*------------------------------------------------------------------------*/
|
最佳答案
查看完整内容
运行了一下,首先,你的插入里面
printf("请输入要在第a个节点后插入一个节点 a = ");
scanf("%d",a);
这里应该是scanf("%d",&a);
printf("请输入新节点的数据 val =");
scanf ("%d",val);
这里也是应该是scanf("%d",&val);
我继续帮你看,看完了 把改过之后的完整代码贴出来
|