习题11-7 奇数值结点链表 (20分)

图片说明

部分正确 ,提示: 段错误,求大神解答
struct ListNode *readlist()
{
struct ListNode *head,*tail,*p;
int t=0;
scanf("%d",&t);
head=tail=NULL;
int size=sizeof(struct ListNode);
while(t!=-1)
{
p=(struct ListNode *)malloc(size);
p->data=t;
if(head==NULL)
{
head=p;
}else{
tail->next=p;
}
tail=p;
scanf("%d",&t);
}
tail->next=NULL;
return head;
}
struct ListNode *getodd( struct ListNode **L )
{
struct ListNode *p,*head,*tail,*head2,*tail2;
p=*L;
head=tail=head2=tail2=NULL;
while(p!=NULL)
{
if(p->data%2!=0)
{
if(head==NULL)
{
head=p;
}else{
tail->next=p;
}
tail=p;
p=p->next;
}else{
if(head2==NULL)
{
head2=p;
}else{
tail2->next=p;
}
tail2=p;
p=p->next;
}
}
tail->next=NULL;
tail2->next=NULL;
*L=head2;
return head;
}

0

2个回答

内存的指针有没有检查过啊

0
l15973239190
l15973239190 我不熟 我找不出问题在哪里
接近 2 年之前 回复

tail->next=NULL;
tail2->next=NULL;
放在最大的if和else里的p=p->next;后面
删除最后的tail->next=NULL;tail2->next=NULL;

0
Li_Jusong
大魔王! 请问为什么这样就可以了呢?
大约 2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
PTA习题11-7 奇数值结点链表(20 分) 改进版
#include<stdio.h> #include<stdlib.h> #define N 20 typedef struct ListNode{ int Data; ListNode *Next; }ListNode; ListNode *readlist(); ListNode *getodd(ListNode **L); void printl...
浙大版《C语言程序设计(第3版)》题目集 - 习题11-7 奇数值结点链表(20 分)
题目链接:点击打开链接   题目大意:略。   解题思路:题目说删除了,其实可以转化为再搞一个获取奇数时的做法来做偶数的情况,最后把地址赋值给L,这样思路就简单许多~。还有这里带两个星号的L,其实多了一个星号是因为传参时,传进去的是指针变量的地址(此地址非内容)。   AC 代码 struct ListNode *readlist() { struct ListNode *...
习题11-7 奇数值结点链表(20 分)提问
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下: struct ListNode { int data; ListNode *next; }; 函数接口定义: struct ListNode *readlist(); struct ListNode *getodd( struct ListNode **L ...
C语言入门:奇数值节点链表
奇数值节点链表:输入若干个正整数(输入-1为结束标志)建立一个单向链表,头指针为L,将链表L中奇数值的节点重新组成一个新的链表NEW,并输出新建链表的信息。试编写相应程序。 #include #include struct a { //结构a的定义 int n; struct a *next; } A; struct a *creat() //建立链
奇数值结点链表
习题11-7 奇数值结点链表   (20分) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下: struct ListNode { int data; ListNode *next; }; 函数接口定义: struct ListNode *readlist(); struct ListNode *
实验二 删除奇数结点的链表-----程序实现
 p35    实验二 删除奇数结点的链表-----程序实现  求解方法有2种: 第一种是用2个链表A和B,从A中寻找偶数结点,把它链到B链表中,最后输出B链表。参考教材p33。   第二种是在一个链表中完成删除奇数结点的操作。目前该程序已经写好,打算下周发布在该网页上。很多同学出现的错误多发生在 如下语句中。请参考思考 完整程序如下:1 :  #inc
例题:C++中删除链表中的奇数元素
C++中表示链表的容器是forward_list。 首先给链表赋一个初始值,用列表初始化的方法:forward_list lst{1,2,3,4,5,6,7}; 删除链表中元素的语句是erase_after。如lst.erase_after(iter),iter是一个迭代器,和erase语句不同的是,erase删除的是这个迭代器所指元素,而erase_after删除的是迭代器所指后面的那个元素
链表删除偶数
#include #include #include using namespace std; struct node { int date; node *next; }; node* delou(node * head) { node *pre,*l; pre=head; l=head->next; while(l!=NULL) {
习题11-7 奇数值结点链表 (20 分)
习题11-7 奇数值结点链表 (20 分) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下: struct ListNode { int data; ListNode *next; }; 函数接口定义: struct ListNode *readlist(); struct ListNode *getodd( struct ListN...
6-2 删除单链表偶数节点 (20 分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下: struct ListNode { int data; struct ListNode *next; }; 函数接口定义: struct ListNode *createlist(); struct ListNode *deleteeven( struct ListNode *head ); 函数cr...
习题11-7 奇数值结点链表 (20 分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下: struct ListNode { int data; ListNode *next; }; 函数接口定义: struct ListNode *readlist(); struct ListNode *getodd( struct ListNode **L ); 函数readlist从...
11-7 奇数值结点链表
奇数值结点链表:输入若干个正整数(输入-1为结束标志)建立一个单向链表,头指针为L,将链表L中奇数值的结点重新组成一个新的链表NEW,并输出新建链表的信息。 链表结点定义: struct ListNode { int data; struct ListNode *next; }; 函数接口定义: struct ListNode *readlist(); struct ListNod...
PTA习题11-8 单链表结点删除(20 分)
#include<stdio.h> #include<stdlib.h> typedef struct ListNode{ int Data; ListNode *Next; }ListNode; ListNode *readlist(); ListNode *deletem(ListNode *l,int m); void printlist(Li...
C语言程序设计 PAT题目
习题7-8 字符串转换成十进制整数(15 分) 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。 输入格式:输入在一行中给出一个以#结束的非空字符串。输出格式:在一行中输出转换后的十进制数。题目保证输出在长整型范围内。输入样例:+-P-xf4+
面试题11 :O(1)删除单链表节点
题目: 写一个函数delectNode(Node header,Node delectNode),在O(1)的时间删除该节点。 输入: 输入一个头插法的单链表。从头到尾是321,要删除的节点是链表头 输出: 21 解题思路: 目前想到有两种,第一种效率较高,我们可以获得要删除的节点的下一个节点,我们只要把下一个节点复制给当前节点就可以了。但是还需要考虑几个问题,要删除的节点是否为空,
习题11-7 奇数值结点链表 (20 point(s))
习题11-7 奇数值结点链表 (20 point(s)) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下: struct ListNode { int data; ListNode *next; }; 函数接口定义: struct ListNode *readlist(); struct ListNode...
PTA 奇数值结点链表
6-5 奇数值结点链表 (20 分) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下: struct ListNode { int data; ListNode *next; }; 函数接口定义: struct ListNode *readlist(); struct ListNode *getodd( struct...
将一个链表中结点的值按奇偶拆分,使其中一个链表结点的值为偶数,另一个为奇数
这是一道笔试题,其实也挺简单,但是在当时笔试的时候,却怎么也想不出做不出来,最后还是写错了。事后在机器上又写了一下,这算是一个总结吧。 综其原因,还是自己平时程序写的少,想的少,从而导致在关键时候由于紧张想不出写不出。 平时就多练习吧。菜鸟多努力! 这个程序实现的功能就是:将一个链表中结点的值按奇偶拆分,使其中一个链表结点的值为偶数,另一个为奇数 具体程序如下: #def
6-13 删除单链表偶数节点 (20 分)
6-13 删除单链表偶数节点 (20 分) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下: struct ListNode { int data; struct ListNode *next; }; 函数接口定义: struct ListNode *createlist(); struct ListNode *deleteeven( struct ...
删除单链表偶数节点 (15 分)
 6-5 删除单链表偶数节点 (15 分) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下: struct ListNode {     int data;     struct ListNode *next; }; 函数接口定义: struct ListNode *createlist(); struct ListNode *...
理解链表操作之归并+删除奇数节点+逆序建立
以下是归并两个有序列表的算法 思路: 1.创建一个新的头结点,并分配内存空间 2.创建一个tt结构体指针指向头结点,由他来完成后续的连接操作,不要去动头结点,我们最后要返回他的,所以他的地址不能去改 3.创建临时指针,保存每一步操作的结果 4.用tt指针连接temp同时将tt移动到temp表示当前的指针位置 5.最后连接剩下的没有归并完的链表 6.返回第一个节点(也可以返回头节点,看...
浙大版《数据结构》习题3.5 求链表的倒数第m个元素(20 分)
题目:https://pintia.cn/problem-sets/434/problems/966235055998885888 请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素。 函数接口定义: ElementType Find( List L, int m ); 其中List结构定义如下: typedef stru...
6-2 单链表结点删除(20 分)_单链表的删除节点的两种方式——还是双指针和链表覆盖好用
6-2 单链表结点删除(20 分) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:struct ListNode { int data; ListNode *next; }; 函数接口定义:struct ListNode *readlist(); struct ListNode *deletem( struct
数据结构 单链表操作 PTA练习题1(2)
单链表操作 删除单链表偶数节点 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下: struct ListNode { int data; struct ListNode *next; }; 函数接口定义: struct ListNode *createlist(); struct ListNode *deleteeven( struct ListNo...
数据结构 单链表操作 PTA练习题1
单链表操作 删除单链表偶数节点 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下: struct ListNode { int data; struct ListNode *next; }; 函数接口定义: struct ListNode *createlist(); struct ListNode *deleteeven( struct ListNo...
奇数值结点链表 (20 分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下: struct ListNode { int data; ListNode *next; }; 函数接口定义: struct ListNode *readlist(); struct ListNode *getodd( struct ListNode **L ...
6-1 删除单链表中最后一个与给定值相等的结点 (10 分)2017年山东科技大学数据结构期末考试题
6-1 删除单链表中最后一个与给定值相等的结点 (10 分) 本题要求在链表中删除最后一个数据域取值为x的节点。L是一个带头结点的单链表,函数ListLocateAndDel_L(LinkList L, ElemType x)要求在链表中查找最后一个数据域取值为x的节点并将其删除。例如,原单链表各个节点的数据域依次为1 3 1 4 3 5,则ListLocateAndDel_L(L,3)执行后,...
习题11-8 单链表结点删除 (20 point(s))
习题11-8 单链表结点删除 (20 point(s)) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下: struct ListNode { int data; ListNode *next; }; 函数接口定义: struct ListNode *readlist(); struct ListNode *...
单链表的节点内数据值的删除问题(携程网笔试题)
单链表的节点内数据值的删除问题(携程网笔试题)
将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变(创新工场)
示例: 交换前链表的顺序 交换后链表的顺序 4→5→3→1→2   ==>  5→3→1→4→2  1 ==> 1 (链表仅含一个元素) 2→1 ==>1→2   ==> (链表为空)   C/C++: 链表节点定义为: struct node { struct node *next; int value; }; struct node *swap(struct node
PTA递增的整数序列链表的插入
老师的结果代码: List Insert( List L, ElementType X ) { PtrToNode p,q,t; p=(PtrToNode)malloc(sizeof(struct Node)); p->Data=X; p->Next=NULL; if(L->Next==NULL) L->Next=p...
7-10 链表去重(25 分)
给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。 输入格式: 输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤10​5​​,为结点总...
有序链表的基本用法
有序链表:链表本身是一种无序的数据结构,元素的插入和删除不能保证顺序性,但是有没有有序的链表呢?答案是肯定的,我们在单链表中插入元素时,只需要将插入的元素与头结点及其后面的结点比较,从而找到合适的位置插入即可。一般在大多数需要使用有序数组的场合也可以使用有序链表,有序链表在插入时因为不需要移动元素,因此插入速度比数组快很多,另外链表可以扩展到全部有效的使用内存,而数组只能局限于一个固定的大小中。 ...
面试题—将链表中值为奇数的结点放到值为偶数的结点之前
将链表中值为奇数的结点放到值为偶数的结点之前 例如 :3->2->5->8->4->7->6->9->0->1 经过处理变为:1->9->7->5->3->2->8->4->6->0 代码如下: /* 要求将链表中值为奇数的结点放到值为偶数结点之前
两个有序链表序列的合并
02-线性结构1 两个有序链表序列的合并   (15分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个递增的整数序列。 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType
查找链表中值最大的节点
递归的方式查找链表中值最大的节点,用于交流学习。
考研链表编程题求链表中的值是偶数的节点的和(2017华中师范大学874)
链表编程题 编程求链表节点中的值是偶数的节点的值和。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n; const int maxn=1000; struct node ...
习题2.5 两个有序链表序列的合并(15 分)
/*做完之后才发现自己做麻烦了*/ List Merge( List L1, List L2 ) {   List L=(List)malloc(sizeof(struct Node));   List l1=L1->Next;   List l2=L2->Next;   List newn,pre=L;;   while(l1&&l2)   {     if(l1-...
对单链表分割为奇偶有序链表
原理: ①对原链表中数据进行奇偶分布,奇数在前偶数在后 ②对原链表进行遍历,直至遍历至偶数,进行分割 ③对分割后的链表进行排序/头插法建立带头结点的单链表函数/ LinkList *Create_LinkListF( ) { elemtype ix; LinkList *head, *p; head = (LinkList *) malloc (sizeo
数据结构 6-6 带头结点的链式表操作集 (20 分)
6-6 带头结点的链式表操作集 (20 分) 本题要求实现带头结点的链式表操作集。 函数接口定义: List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); ...
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 奇酷培训python 奇酷学院python