数据结构c语言版,求大神解答,写一下详细的过程,谢谢啊

 我来答
___荒城旧梦day
2016-10-30
知道答主
回答量:8
采纳率:0%
帮助的人:4.8万
展开全部
正好在复习数据结构,刚好碰到这个题了

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct LNode {
int data;
struct LNode *next;
} LNode, *LinkList;
LinkList Create(LinkList la); //创建一个单链表
void TravelList(LinkList la); //遍历单链表
void DeleteRlist(LinkList la); //删除重复结点
int main() {
LNode la;
LinkList n;
n = Create(&la);
printf("原始单链表:\n");
TravelList(n);
DeleteRlist(n);
printf("删除重复结点后的单链表:\n");
TravelList(n);
return 0;
}
LinkList Create(LinkList la) { //创建一个单链表(头插法)
int num;
la = (LinkList)malloc(sizeof(LNode));
la->next = NULL;
printf("请输入一个单链表(以-1结束):\n");
scanf("%d", &num);
while (num != -1) {
LNode *p = (LinkList)malloc(sizeof(LNode));
p->data = num;
p->next = la->next;
la->next = p;
scanf_s("%d", &num);
}
return la;
}

void TravelList(LinkList la) { //遍历单链表输出
LinkList p = la->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}

void DeleteRlist(LinkList la) { //删除重复结点
LNode *p, *q, *r;
p = la->next;//指向第一个结点
if (p == NULL) return;
while (p->next) {
q = p;
while (q->next) {//从*p后面开始找重复结点
if (q->next->data == p->data) {
//printf("%d ", p->data);
r = q->next;//找到重复结点用r指向,删除r;
q->next = r->next;
free(r);
}
else q = q->next;
}
p = p->next;//指向下一个继续
}
}


请输入一个单链表(以-1结束):
8 8 9 5 3 5 8 3 2 0 1 -1
原始单链表:
1 0 2 3 8 5 3 5 9 8 8
删除重复结点后的单链表:
1 0 2 3 8 5 9
请按任意键继续. . .
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式