要求:
1、描述單鏈表的存盤結構定義;
2、創建單鏈表的演算法;
3、完成本題目要求的演算法;
4、測驗本題正確執行的測驗主函式main();
5、設計測驗用例(輸入的測驗資料);
6、測驗結果(可將輸出結果截圖)
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
/* 節點結構定義 */
typedef struct Node{
int data;
struct Node *next;
}Node,* LinkList;
/* 建立單鏈表 */
LinkList creatList(LinkList L,int n){
Node *p,*q;
int i;
L=(LinkList)malloc (sizeof(Node));/* 建立頭結點 */
L->next=NULL;/* 建立空表 */
p=(LinkList)malloc(sizeof (Node));
printf(" 第1個節點的值:");
scanf("%d",&(p->data));
p->next=L->next;
L->next=p;
q=p;/* 插入第一個結點,for陳述句插入剩余結點*/
for(i=n-1;i>0;i--){
p=(LinkList)malloc (sizeof(Node));
printf(" 第%d個節點的值:",n+1-i);
scanf("%d",&(p->data));
p->next=q->next;
q->next=p;
q=p;
}
return L;
}
void show(LinkList L){
Node *p;
for(p=L->next;p!=NULL;p=p->next){
printf(" %d ",p->data);
}
}
/*比較,根據La的值輸入到Lb中
1、a<b
2、a=b
3、a>b
*/
LinkList compare(LinkList La,LinkList Lb){
Node *p,*q,*r;
LinkList Lc;
p=La->next;
q=Lb->next;
Lc=La;
Lc->next=NULL;
r=Lc;
while ( p!=NULL && q!=NULL ){
if(p->data<=q->data){
r->next=p;
r=p;
p=p->next;
}
else{
r->next=q;
r=q;
q=q->next;
}
if(p){r->next=p;}
else{r->next=q;}
//printf("\n",Lc);
}
return (Lc);
}
main(){
LinkList La,Lb,Lc;
La=creatList(La,3);
printf("La 輸入的值依次為:\n");
show(La);
printf("\n");
Lb=creatList(Lb,3);
printf("Lb 輸入的值依次為:\n");
show(Lb);
Lc=compare(La,Lb);
printf("\n輸入的值依次為:\n");
show(Lc);
getch();
return 0;
}
uj5u.com熱心網友回復:
這個是兩個排好序的鏈表結合成一個排好序的鏈表……題目意思是如何在一個亂序的鏈表中。
實作以初始鏈表第一個元素為標準,大的放在初始鏈表第一個元素前面,小的放在初始鏈表第一個元素后面
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/58148.html
標籤:C++ 語言
上一篇:求問大佬為什么我輸出總是10
