亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如下要求的內容,單鏈表插入一個值后有序排列怎么做?

如下要求的內容,單鏈表插入一個值后有序排列怎么做?

<1>求鏈表中第i個結點的指針(函數),若不存在,則返回NULL。<2>在第i個結點前插入值為x的結點。<3>刪除鏈表中的第i個結點<4>將單鏈表L中的奇數項和偶數項結點分解開,并分別連成一個帶頭結點的單鏈表,然后再將這兩個新鏈表同時顯示在屏幕上,并保留原鏈表的顯示。<5>在一個遞增有序的鏈表L中插入一個值為x的元素,并保持其遞增有序特性。這些題目有誰會???
查看完整描述

2 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

#include<stdio.h>
#include<malloc.h>

typedef struct node
{
int data;
struct node *next;
}node;

node *head,*p1,*p2;

/*建鏈表*/

void creat()
{ int i;

head=p1=(node*)malloc(sizeof(node));

for(i=0;i<30;i+=2)
/*已知帶頭節點的單鏈表L中的結點是按整數值遞增排列的(就賦0-28所有偶數了

)*/
{
p2=(node*)malloc(sizeof(node));
p2->data=i;
p1->next=p2;
p1=p2;
}
p1->next=NULL;
}

/*插入結點*/

void insert(node* temp)
{ p1=head->next;
p2=head;
while(p1!=NULL&&(temp->data)>(p1->data))
{
p2=p1;
p1=p2->next;
}
if(p1!=NULL)
{
temp->next=p1;
p2->next=temp;
}
else
{
p2->next=temp;
temp->next=NULL;

}
}

/*輸出鏈表*/
void print()
{

p1=head->next;
while(p1!=NULL)
{
printf("%d->",p1->data);

p1=p1->next;
}
printf("\n");
}

/*主函數*/
int main()
{ node *temp;

creat();
printf("原鏈表為:\n");
print();
temp=(node*)malloc(sizeof(node));
printf("輸入要插入的值\n");
scanf("%d",&temp->data);
insert(temp);
printf("插入結點后鏈表為:\n");
print();
return 0;
}

#include<stdio.h>
#include<malloc.h>

typedef struct node
{
int data;
struct node *next;
}node;

node *head,*p1,*p2;

/*建鏈表*/

void creat()
{ int i;

head=p1=(node*)malloc(sizeof(node));

for(i=0;i<30;i+=2)
/*已知帶頭節點的單鏈表L中的結點是按整數值遞增排列的(就賦0-28所有偶數了

)*/
{
p2=(node*)malloc(sizeof(node));
p2->data=i;
p1->next=p2;
p1=p2;
}
p1->next=NULL;
}

/*插入結點*/

void insert(node* temp)
{ p1=head->next;
p2=head;
while(p1!=NULL&&(temp->data)>(p1->data))
{
p2=p1;
p1=p2->next;
}
if(p1!=NULL)
{
temp->next=p1;
p2->next=temp;
}
else
{
p2->next=temp;
temp->next=NULL;

}
}

/*輸出鏈表*/
void print()
{

p1=head->next;
while(p1!=NULL)
{
printf("%d->",p1->data);

p1=p1->next;
}
printf("\n");
}

/*主函數*/
int main()
{ node *temp;

creat();
printf("原鏈表為:\n");
print();
temp=(node*)malloc(sizeof(node));
printf("輸入要插入的值\n");
scanf("%d",&temp->data);
insert(temp);
printf("插入結點后鏈表為:\n");
print();
return 0;
}

單鏈表插入一個值后有序排列



查看完整回答
反對 回復 2022-05-10
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

#include<stdio.h>
#include<malloc.h>
struct node{
int key;
struct node *next;
};
void creat_link(struct node *);
main()
{
struct node *head=NULL;
creat_link(head);
}
void creat_link(struct node *head_node)
{
struct node *p,*q,*Temp;
int number;
printf("Please input data:[-1 is End]\n");
scanf("%d",&number);
while(number!=-1){
q=(struct node *)malloc(sizeof(struct node));
q->key=number;
if(head_node==NULL ){
head_node=q;
p=q;
}
else{
p->next=q;
p=q;
}
scanf("%d",&number);
}
p->next=NULL;
Temp=head_node;
while(Temp!=NULL){
printf("%d\n",Temp->key);
Temp=Temp->next;
}
}



查看完整回答
反對 回復 2022-05-10
  • 2 回答
  • 0 關注
  • 230 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號