第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如下好幾道題關(guān)于算法的,麻煩了解的大神幫忙看看~

如下好幾道題關(guān)于算法的,麻煩了解的大神幫忙看看~

九州編程 2022-05-07 10:06:20
(1) 設(shè)某帶頭結(jié)點的單鏈表的結(jié)點結(jié)構(gòu)說明如下:typedef struct nodel{int datastruct nodel * next ;}node ;試設(shè)計一個算法: void copy ( node * head1 , node * head2 ),將以 head1 為頭指針的單鏈表復(fù)制到一個以 head2 為頭指針的單鏈表中。(2) 設(shè)有兩個按升序排列的單鏈表 X 和 Y ,其實指針分別為 p 、 q ,結(jié)點結(jié)構(gòu)說明如下:typedef struct nodel{intdata ;struct nodel * next} node;試設(shè)計一個算法 void concat ( node p , q ),將它們合并成一個以 p 為頭指針的單鏈表 Z ,使其仍然有序。(3) 寫出在鏈?zhǔn)酱鎯l件下,將單鏈表 L1 的元素連接在單鏈表 L2 的尾部的算法。Link ( L1 , L2 )(4) 寫出刪除單鏈表 L 中值大于 max 或小于 min 的元素的算法。Delete9 ( L , max , min )(5) 用 C 語言寫出在鏈?zhǔn)酱鎯l件下,刪除但鏈表 L 中值相同的多余元素(使鏈表中元素的值均不相同)的算法。Delete10 ( L )(6) 用C 語言寫出將單鏈表逆置的算法,即利用原來的順序表將線性表 L= ( a1 , a2 , a3 ,…, an )逆置為 L= ( an ,…, a3 , a2 , a1 )。move12 ( L )(7) 設(shè)單鏈表 A= ( a1 , a2 , a3 ,…, an )和 B=(b1, b2, b3, …, bm ),用C 語言編寫將 A 與 B 合并為單鏈表 C 算法。即:C= ( a1 , b1 , a2 , b2 , a3 , b3 ,…, an , bn , bn+1 ,…, bm ) 當(dāng) n ≤ mC= ( a1 , b1 , a2 , b2 , a3 , b3 ,…, am , bm , am+1 ,…, an ) 當(dāng) n ≤ m其中 n 和 m 是已知條件, C 表利用 A 表和 B 表的結(jié)點空間。Mpass13 ( A , B , C ,)(8) 設(shè)單鏈表 A= ( a1 , a2 , a3 ,…, an )和 B= ( b1, b2, b3, …, bm )都是有序表(按值從小到大排列),用C 語言編寫將 A 與 B 合并為鏈表 C 的算法, C 表也要求從小到大。其中 n 和 m 不已知條件, C 表利用 A 表和 B 表的結(jié)點空間。Mpass14 ( A , B , C )(9) 已知 A , B , C 是三個按值從小到大有序的單鏈表,對 A 表進行如下操作:刪除那些即在 B 表又在 C 表中元素。Delete15 ( A , B , C )(10) 已知指針 s 指向單向循環(huán)鏈表的一個有前驅(qū)的接點,寫出刪除該接點的直接前驅(qū)結(jié)點的算法。Delete16 ( s )(11) 已知單鏈表 L 是按值從小到大有序,將 X 插入到 L 鏈表中,并保持 L 鏈表有序,寫出算法。Insert ( L , X )(12) 已知單鏈表 L 和指向 L 表中的一個結(jié)點的指針 R ,從 R 將 Lbiao 表分成兩個單鏈表,要求 R 結(jié)點作為一個鏈表的首結(jié)點。知道的大神們,幫忙一下,回答的時候把題號標(biāo)一下
查看完整描述

2 回答

?
繁星淼淼

TA貢獻1775條經(jīng)驗 獲得超11個贊

#include<iostream>
using namespace std;
#include <ctime>
typedef int ElemType;
//節(jié)點定義
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
//手動方式創(chuàng)建鏈表
LinkList Manual_Create_LinkList(int n)
{ cout<<"采用手動方式創(chuàng)建鏈表:"<<endl;
LinkList _LinkList = new LNode();
if(_LinkList)
{_LinkList->next = NULL;}
for(int i = 0 ; i < n ; i++)
{ LinkList p = new LNode();
cout<<"輸入第"<<(i+1)<<"個元素:";
cin>>p->data;
p->next = _LinkList->next;
_LinkList->next = p;
}return _LinkList;}
//自動方式創(chuàng)建鏈表
LinkList Auto_Create_LinkList(int n)
{ cout<<"采用自動隨機數(shù)方式創(chuàng)建鏈表:"<<endl;
LinkList _LinkList = new LNode();
if(_LinkList)
{_LinkList->next = NULL;}
srand(time(0)); //seed
for(int i = n; i > 0 ; i--)
{
LinkList p = new LNode();
p->data = rand() % 100+ 1;
p->next = _LinkList->next;
_LinkList->next = p;
}
return _LinkList;
}
/*插入非遞減有序單向鏈表*/
void Insert_Sort_LinkList(LinkList &_LinkList,ElemType _Var)
{
LinkList _LinkList1,_LinkList2;
_LinkList1 = new LNode();
_LinkList1->data = _Var;
_LinkList2=_LinkList;
while(_LinkList2->next && _LinkList2->next->data <=_Var)
{_LinkList2 = _LinkList2->next;}
_LinkList1->next = _LinkList2->next;
_LinkList2->next = _LinkList1;
}
//建立非遞減有序單向鏈表
LinkList Manual_Create_Ordered_LinkList(int _int)
{
cout<<"采用手動方式建立非遞減有序單向鏈表:"<<endl;
LinkList _LinkList = new LNode();
if(_LinkList)
{_LinkList->next = NULL;}
int i = 0;int j = 0;int k = 0;ElemType _Var;
for(i=0;i<_int;i++)
{
cout<<"輸入第"<<(i+1)<<"個元素:";
cin>>_Var;

Insert_Sort_LinkList(_LinkList,_Var);
}
return _LinkList;
}
//銷毀鏈表
void Destroy_LinkList(LinkList *myLinkList)
{
LinkList _LinkList1,_LinkList2;
if(!(*myLinkList))
{cout<<"鏈表不存在!"<<endl;return;}
_LinkList1 = *myLinkList;
while(_LinkList1 != NULL)
{
_LinkList2 = _LinkList1;
_LinkList1 = _LinkList1->next;
delete(_LinkList2);
}
*myLinkList = NULL;
}
//遍歷鏈表
void Traveral_LinkList(LinkList myLinkList)
{
cout<<"------------------------------"<<endl;
cout<<"遍歷鏈表中的元素:"<<endl;
int i = 0;
/*第一種遍歷方式*/
LinkList _LinkList = myLinkList->next;
while(_LinkList)
{
cout<<"輸出第"<<(i+1)<<"個元素:"<<_LinkList->data<<endl;
_LinkList = _LinkList->next;
i++;
}

/*第二種遍歷方式*/
/*
LinkList _LinkList;
for(_LinkList = myLinkList->next;_LinkList;_LinkList=_LinkList->next)
{
cout<<"輸出第"<<i<<"個元素:"<<_LinkList->data<<endl;
i++;
}
*/
cout<<"------------------------------"<<endl;
}
//查找元素
LinkList Locate_LinkList(LinkList myLinkList,ElemType x)
{ while(myLinkList && myLinkList->data != x)
{
myLinkList = myLinkList->next;
}
return myLinkList;
}//反轉(zhuǎn)鏈表
void Reverse_LinkList(LinkList &myLinkList)
{
LinkList TempLinkList = NULL;
LinkList _LinkList = myLinkList->next; //指向第一個元素
myLinkList->next = NULL; //指向最后一個元素
while(_LinkList)
{
TempLinkList = _LinkList;
_LinkList = _LinkList->next; //下移
TempLinkList->next = myLinkList->next;
myLinkList->next = TempLinkList;
}
}
/*刪除指定元素*/
void Delete_LinkList(LinkList myLinkList,ElemType x)
{
int i = 0;
if(!myLinkList)
{cout<<"鏈表不存在!"<<endl;return;}
/*[Begin]第一種方法*/
/*
LinkList _LinkList1 = myLinkList;
LinkList _LinkList2 = myLinkList->next;
while(_LinkList2 && _LinkList2->data != x)
{ _LinkList1 = _LinkList2;
_LinkList2 = _LinkList2->next;
} if(!_LinkList2)
{cout<<"值沒有找到!"<<endl;return;}
else
{ _LinkList1->next = _LinkList2->next;
delete(_LinkList2);
}
*/
/*[End]第一種方法*/
/*[Begin]第二種方法*/
/**/
LinkList _LinkList = myLinkList;
//循環(huán)條件:下個結(jié)點不為NULL,并且下個結(jié)點不為x
while(_LinkList->next != NULL && _LinkList->next->data != x)
{_LinkList = _LinkList->next;}
//判斷是否已經(jīng)循環(huán)到最后一個結(jié)點
if(_LinkList->next == NULL)
{cout<<"值沒有找到!"<<endl;return;}
LinkList TempLinkList = _LinkList->next;
_LinkList->next = TempLinkList->next;
delete(TempLinkList);
/*[End]第二種方法*/
}

void main()
{ LinkList myLinkList;
int i=0;int num = 0;
/*[Begin]手動創(chuàng)建鏈表--------------------*/
cout<<"使用手動輸入創(chuàng)建鏈表,輸入要創(chuàng)建的鏈表的元素個數(shù):";
cin>>num;
myLinkList = Manual_Create_LinkList(num);
Traveral_LinkList(myLinkList); //遍歷鏈表
/*[End]手動創(chuàng)建鏈表---------------------*/
/*[Begin]刪除元素值---------------------*/
cout<<"輸入要刪除的元素值:";
cin>>num;
Delete_LinkList(myLinkList,num);
Traveral_LinkList(myLinkList); //遍歷鏈表
/*[End]刪除元素值----------------------*/
Destroy_LinkList(&myLinkList); //銷毀鏈表
/*[Begin]隨機數(shù)創(chuàng)建鏈表---------------------*/
num = 0;
cout<<"使用隨機數(shù)創(chuàng)建鏈表,輸入要創(chuàng)建的鏈表的元素個數(shù):";
cin>>num;
myLinkList = Auto_Create_LinkList(num);
Traveral_LinkList(myLinkList); //遍歷鏈表
/*[End]隨機數(shù)創(chuàng)建鏈表----------------------*/
/*[Begin]鏈表元素反轉(zhuǎn)---------------------*/
cout<<"將隨機數(shù)創(chuàng)建的鏈表元素反轉(zhuǎn):";
Reverse_LinkList(myLinkList);
Traveral_LinkList(myLinkList); //遍歷鏈表
/*[End]鏈表元素反轉(zhuǎn)----------------------*/
Destroy_LinkList(&myLinkList); //銷毀鏈表
/*[Begin]建立非遞減有序單向鏈表---------------------*/
cout<<"使用手動輸入建立非遞減有序單向鏈表,輸入要創(chuàng)建的鏈表的元素個數(shù):";
cin>>num;
myLinkList = Manual_Create_Ordered_LinkList(num);
Traveral_LinkList(myLinkList); //遍歷鏈表
/*[End]建立非遞減有序單向鏈表----------------------*/
}



查看完整回答
反對 回復(fù) 2022-05-10
?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

#include <stdio.h>
typedef struct student
{
int id;
char name[20];
float score;
}elemtype;
elemtype stu[ ]={{1,"wang",78.0},{2,"zhang",80.0},{3,"li",86.0}};
typedef struct list_type
{
elemtype data[3];
int num;
}listtype;

int insert1 (listtype *l,int i,elemtype x);

int main()
{
int i;
listtype lt;
lt.num = 0;

for (i=0;i<3;i++)
{
printf("%d,%s,%f",stu[i].id,stu[i].name,stu[i].score);
}
insert1(<, 0, stu[2]);
insert1(<, 1, stu[1]);
insert1(<, 2, stu[0]);
printf("\nresult:\n");
for (i = 0; i < lt.num; i++)
{
printf("%d, %s, %f\n", lt.data[i].id, lt.data[i].name, lt.data[i].score);
}
return 0;
}

# define true 0
# define false 1
int insert1 (listtype *l,int i,elemtype x)
{
int j;
if (l->num>=3)
{
printf("the list is full,can not insert.");
return(false);
}
if ((i<0)||(i>l->num))
{
printf("i is invalid value");
return(false);
}
for (j=l->num-1;j>=i;j--)
l->data[j+1]=l->data[j];
l->data[i]=x;
l->num++;
return(true);
}



查看完整回答
反對 回復(fù) 2022-05-10
  • 2 回答
  • 0 關(guān)注
  • 176 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號