1、创建一个带头结点的单链表(头指针为head),且遍历此链表(输出链表中各结点的值);

有会C语言编程的吗?寻好友···
在main 函数里调用自己写的子函数的时候,老是提示找不到是怎么回事?

第1个回答  2011-04-24
//此题适用计数排序
#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
int num;
struct node * next;
}Node, *List;

List ListInit(List Head, int n)
{
List p;
int i;
for(i = 0; i < n; i ++)
{
p = (List)malloc(sizeof(Node));
p->next = Head;
Head = p;
}
return Head;
}
List ListReleas(List Head)
{
List p = Head;

while(Head)
{
p = Head;
Head=p->next;
free(p);
}
return Head;
}

int main()
{
List Head = NULL, p = NULL;
int count[3] = , n, inum;
printf("输入节点数:");
scanf("%d", &n);
Head = ListInit(Head, n);

printf("输入每个节点值(共%d个,只接受-1,0,1):\n", n);
p = Head;
while( p != NULL )
{
scanf("%d", &p->num);
if(p->num < 2 && p->num > -2)
p = p->next;
}

//以下为排序(计数排序)
p = Head;
while( p != NULL )
{
count[p->num + 1] ++;
p = p->next;
}

p = Head;
inum = -1;
while( p != NULL )
{
if(count[inum + 1])
{
p->num = inum;
p = p->next;
count[inum + 1]--;
}
else
inum ++;
}

//以下为输出
p = Head;
while( p != NULL )
{
printf("%d ", p->num);
p = p->next;
}
printf("\n");

ListReleas(Head);

return 0;
}追问

int count[3] = , n, inum;
printf("输入每个节点值(共%d个,只接受-1,0,1):\n", n);
是什么意思啊?不大懂 问什么只接受-1,0,1呢?

第2个回答  2011-04-24
带头结点的单链表的建立算法:
LinkList Creat_LinkList()
{
LinkList L;
LNode *R;
int x;
L=(LinkList)malloc(sizeof(Lnode));
L->next=NULL;
R=L;
scanf("%d",&x);
while(x!=flag){
R->next=malloc(sizeof(LNode));
R->next->data=x;
R=R->next;
scanf("%d",&x);
}
R->next=NULL;
return L;
}

这个是遍历输出的函数:
LinkList bianli(LinkList *L){
LinkLink *P;
p=L->next;
while(P->next!=null){
printf("%d\n",P->data);
P=P->next;
}
}

希望能帮到你追问

怎么写主函数呢?我一直都没法遍历

相似回答
大家正在搜