2.(10分)设有一个带头结点,由正整数组成的无序单链表,头指针为L.整个问题如下
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/28 21:28:31
2.(10分)设有一个带头结点,由正整数组成的无序单链表,头指针为L.整个问题如下
2.(10分)设有一个带头结点,由正整数组成的无序单链表,头指针为L,
Typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*Linklist;
Linklist L;
给出完成下列功能的算法并分析算法时间复杂度:
①找出最小值结点,且打印该数值;
②若该数值是奇数,则将其与直接后继结点(若存在)的数值交换;
③若该数值是偶数,则将其直接后继结点(若存在)删除;
数据结构问题,用C解决
2.(10分)设有一个带头结点,由正整数组成的无序单链表,头指针为L,
Typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*Linklist;
Linklist L;
给出完成下列功能的算法并分析算法时间复杂度:
①找出最小值结点,且打印该数值;
②若该数值是奇数,则将其与直接后继结点(若存在)的数值交换;
③若该数值是偶数,则将其直接后继结点(若存在)删除;
数据结构问题,用C解决
#include
#include
typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*Linklist;
Linklist L;
Linklist ListInit(Linklist Head, int n)
{
Linklist p;
int i;
for(i = 0; i < n; i ++)
{
p = (Linklist)malloc(sizeof(Lnode));
p->next = Head;
Head = p;
}
return Head;
}
Linklist ListReleas(Linklist Head)
{
Linklist p = Head;
while(Head)
{
p = Head;
Head=p->next;
free(p);
}
return Head;
}
int main()
{
Linklist Head = NULL, p = NULL, q = NULL;
int count[3] = {0}, n, inum;
printf("输入节点数:");
scanf("%d", &n);
Head = ListInit(Head, n);
printf("输入每个节点值(共%d个):\n", n);
p = Head;
while( p != NULL )
{
scanf("%d", &p->data);
p = p->next;
}
//找出最小值
q = Head;
p = Head;
while( p != NULL )
{
if(p->data < q->data)
q = p;
p = p->next;
}
printf("最小值为:%d\n",q->data);
//以下为第一次输出
p = Head;
while( p != NULL )
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
//奇偶判断并进行处理
if(q->data % 2)
{
if(q->next)
{
inum = q->data;
q->data = q->next->data;
q->next->data = inum;
}
}
else
{
while(q->next)
{
p = q->next;
q->next = p->next;
free(p);
}
}
//以下为修改后输出
p = Head;
while( p != NULL )
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
ListReleas(Head);
return 0;
}
#include
typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*Linklist;
Linklist L;
Linklist ListInit(Linklist Head, int n)
{
Linklist p;
int i;
for(i = 0; i < n; i ++)
{
p = (Linklist)malloc(sizeof(Lnode));
p->next = Head;
Head = p;
}
return Head;
}
Linklist ListReleas(Linklist Head)
{
Linklist p = Head;
while(Head)
{
p = Head;
Head=p->next;
free(p);
}
return Head;
}
int main()
{
Linklist Head = NULL, p = NULL, q = NULL;
int count[3] = {0}, n, inum;
printf("输入节点数:");
scanf("%d", &n);
Head = ListInit(Head, n);
printf("输入每个节点值(共%d个):\n", n);
p = Head;
while( p != NULL )
{
scanf("%d", &p->data);
p = p->next;
}
//找出最小值
q = Head;
p = Head;
while( p != NULL )
{
if(p->data < q->data)
q = p;
p = p->next;
}
printf("最小值为:%d\n",q->data);
//以下为第一次输出
p = Head;
while( p != NULL )
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
//奇偶判断并进行处理
if(q->data % 2)
{
if(q->next)
{
inum = q->data;
q->data = q->next->data;
q->next->data = inum;
}
}
else
{
while(q->next)
{
p = q->next;
q->next = p->next;
free(p);
}
}
//以下为修改后输出
p = Head;
while( p != NULL )
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
ListReleas(Head);
return 0;
}
1.设有n 个整数组成的序列存放于一个带头结点的单链表中,HEAD为头指针.每个整数为-1,0,1之一.编写一个时间复杂
已知带头结点的单链表L,指针P指向L链表中的一个结点为(非首结点、非尾结点),
关于数据结构的一道题试写一算法,将指针s指向的无头结点的单链表链接到带头结点单链表L的最后一个结点之后.函数原型使用St
在一个带头结点的单循环链表中,p指向尾结点的直接前驱,则指向头结点的指针head可用p表示为head=
在一个头指针为L的循环链表中,指针域为next,指针P所指结点(此结点是尾结点)的条件是( ).
为什么建立一个头结点的时候要使头结点的指针域为空
设单链表L带头结点且非空,指针变量p指向L中的一个结点,且该结点既不是L中的第一个结点,也不是L中的最后一个结点,指针变
已知head为带头结点的单循环链表的头指针,链表中的数据元素依次为(a1,a2,a3,a4,…
一个链表不知道头结点,有一个指针指向其中一个结点,请问如何删除这个指针指向的结点.
已知带表头结点的单链表L,指针P指向L链表中的一个结点(非首、尾结点):删除P结点的语句序列是?
头结点的地址指针为L 的循环单列表,空表的判断标志是?
数据结构:rear是指向非空带头结点的循环单链表的尾指针,则删除起始点的操作可表示为()选择哪个求大神