大神求解数据结构,单链表,要c语言完整详解,要直接贴上去就能编译的,急求速度,大神给力!满意还加分哦

有一个带头结点的单链表,所有元素值以非递减有序排列,head为其头指针,编写算法deldy-list()将该链表中多余元素值相同的结点删除。... 有一个带头结点的单链表,所有元素值以非递减有序排列,head为其头指针,编写算法deldy-list()将该链表中多余元素值相同的结点删除。 展开
 我来答
李小军216
2012-06-19 · 超过12用户采纳过TA的回答
知道答主
回答量:25
采纳率:0%
帮助的人:38.1万
展开全部
#include <stdio.h>
#include <stdlib.h>
struct Node{//链表中结点的结构体
int Value;
struct Node *next;
};

void Create_List(struct Node *head)//创建非递减有序的链表
{
struct Node *p,*q,*oldhead;
int temp,num;
printf("当输入链表的长度");
scanf("%d",&num);
while(num>=1)
{
p=(struct Node*)malloc(sizeof(struct Node));
scanf("%d",&temp);
p->Value=temp;
p->next=NULL;
if(head->next==NULL)
head->next=p;
else
{
q=head->next;
oldhead=head;
while(q!=NULL&&q->Value<temp)
{
q=q->next;
head=head->next;
}
if(q==NULL)
head->next=p;
else{
head->next=p;
p->next=q;}
head=oldhead;

}
num--;
}

}

void put(struct Node *head)//输出链表
{
struct Node *p;
p=head->next;
while(p!=NULL)
{
printf("%d ",p->Value);
p=p->next;
}
printf("\n");

}

void Deldy_list(struct Node *head)//删除重复值
{
struct Node *p,*q;//工作指针
p=head->next;q=p->next;
while(q!=NULL)
{
if(p->Value==q->Value)//删除重复值
{
p->next=q->next;
free(q);
q=p->next;
}
else{
p=p->next;
q=q->next;
}
}

}

int main()
{
struct Node *head;//链表的头结点和尾结点
head=(struct Node*)malloc(sizeof(struct Node));
head->next=NULL;
Create_List(head);
put(head);
Deldy_list(head);
put(head);
return 1;

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式