c语言怎么判断链表的节点数值是否相同?

c语言怎么判断链表的节点数值是否相同?定义的结构体中有一个成员是num,然后第一个节点输入数值,要在下一个节点输入时如果相同则显示错误,怎么实现?... c语言怎么判断链表的节点数值是否相同?定义的结构体中有一个成员是num,然后第一个节点输入数值,要在下一个节点输入时 如果相同则显示错误,怎么实现? 展开
 我来答
瑞候端瓜0Y
2017-05-11 · TA获得超过2039个赞
知道小有建树答主
回答量:323
采纳率:100%
帮助的人:93.9万
展开全部
#include<stdio.h>
#include<stdlib.h>

#define FALSE 0
#define TRUE 1

typedef struct NODE
{
int num;
struct NODE *next;
} Node,*Link;

int printLink(Link head) //屏幕打印链表
{
    Link current;
int count=0;
if(head==NULL)
{
printf("\n链表还没有节点.\n");
}
else
{
current = head;
while(current!=NULL)
{
count++;
printf("%d ",current->num);
current=current->next;
}
}
return count;
}

int insertNode(Link *head,int value) //添加新节点
{
Link prev;
Link current;
Link newNode;
int isExist;
//情况1:链表还没有节点
if(*head==NULL)
{
newNode=(Node*)malloc(sizeof(Node));
if(newNode==NULL)
{
    printf("\n分配动态内存时出错.\n");
return FALSE;
}
newNode->num=value;
newNode->next=NULL;
*head=newNode;
return TRUE;
}
//情况2:起码有1个节点
isExist=0;
current = *head;
prev=current;
while(current!=NULL) //遍历链表
    {
        if(current->num == value)
        {
            isExist=1; //有重复数值的节点
            break;
        }
        prev=current;
        current=current->next;
    }
    if(isExist==1)
    {
        printf("\n已经有相同数值(%d)的节点,不用添加.\n",value);
        return FALSE;
    }
newNode=(Node*)malloc(sizeof(Node));
if(newNode==NULL)
{
        printf("\n分配动态内存时出错.\n");
        return FALSE;
}
//在链表的末尾添加新记录
newNode->num=value;
newNode->next=NULL;
    prev->next=newNode;

    return TRUE;
}

int main()
{
Link head=NULL;
int nCount;
int value;
int result;
    int total;
int i;

printf("要输入的节点总数量是:");
scanf("%d",&nCount);
printf("请输入%d个节点:",nCount);
for(i=0;i<nCount;i++)
    {
       scanf("%d",&value);
       result=insertNode(&head,value);
    }
//屏幕打印链表
printf("\n链表的节点有:");
total=printLink(head);
printf("\n一共有%d个节点\n",total);

printf("\n");
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式