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

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

如下具體描述,求指教兩道數(shù)據(jù)結(jié)構(gòu)算法?

如下具體描述,求指教兩道數(shù)據(jù)結(jié)構(gòu)算法?

1.設(shè)有兩個帶點結(jié)點的單鏈表A和B,鏈表中結(jié)點的數(shù)據(jù)域為data(沒為整型),指針域為next。請用C語言函數(shù)形式寫出將表A和B合并為一個單鏈表L的算法Union(A,B,L)(若A和B中有數(shù)據(jù)值相同的結(jié)點,只保留其中一個)2.編寫算法,實現(xiàn)串的基本操作Strcompare(S,T)謝謝了
查看完整描述

2 回答

?
拉丁的傳說

TA貢獻(xiàn)1789條經(jīng)驗 獲得超8個贊

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

//-----------線性表的單鏈表存儲結(jié)構(gòu)-------------
typedef int ElemType;
typedef struct Node{
ElemType data;
struct Node *next;
} *LNode, *LinkList;
//----------線性表的單鏈表基本操作------------
LinkList InitList(void); //構(gòu)造一個空的線性表
LNode NewLNode(ElemType X);//構(gòu)造一個數(shù)據(jù)域為X的新結(jié)點
LNode FindPrefious(ElemType X, LinkList L);
//初始條件:線性表L已存在。 操作結(jié)果:在線性表L中尋找值為X的結(jié)點,若找到則返回該結(jié)點的前驅(qū),否則返回NULL。
void ListDelete(LNode Pre);//初始條件:線性表L中結(jié)點P已找到。 操作結(jié)果:刪除該結(jié)點。
//初始條件:線性表L中結(jié)點P已找到,新結(jié)點S已構(gòu)造。 操作結(jié)果:在該結(jié)點之前插入新結(jié)點X。
void ListInsert(LNode Pre, LNode S);
LinkList CreateList(ElemType a[], ElemType len); //用來構(gòu)造一個鏈表
void Union(LinkList A, LinkList B, LinkList * L); //合并兩個串
int Strcompare(LinkList S, LinkList T); //比較兩個串的大小
void PrintLink(LinkList L); //輸出鏈表

int main(void)
{
LNode LA, LB, L;
ElemType A[5]={1,2,3,4,5}, B[8]={3,4,5,6,7,8,9,11};
//把集合A和B分別存入兩個單向鏈表LA和LB中
LA = CreateList(A, 5);
LB = CreateList(B, 8);
PrintLink(LA); //輸出鏈表
PrintLink(LB); //輸出鏈表

Union(LA, LB, &L);//合并兩個串
PrintLink(L); //輸出鏈表

if (Strcompare(LA, LB) > 0) //比較兩個串的大小
printf("LA > LB\n");
else if (Strcompare(LA, LB) < 0)
printf("LA < LB\n");
else
printf("LA = LB\n");

system("pause");
return 0;
}

void Union(LinkList A, LinkList B, LinkList * L)//合并兩個串
{
ElemType X;
LNode S, P;

*L = InitList(); //構(gòu)造一個空的線性表

P = A->next;
while(P) //遍歷鏈表A
{
X = P->data;
S = NewLNode(X); //構(gòu)造一個數(shù)據(jù)域為X的新結(jié)點
ListInsert(*L, S); //把新結(jié)點S插到頭結(jié)點后面。
P = P->next;
}

P = B->next;
while(P) //遍歷鏈表B
{
X = P->data;
if(!FindPrefious(X, A)) //看看A中是否有數(shù)據(jù)值相同的結(jié)點,只保留其中一個
{
S = NewLNode(X); //構(gòu)造一個數(shù)據(jù)域為X的新結(jié)點
ListInsert(*L, S); //把新結(jié)點S插到頭結(jié)點后面。
}
P = P->next;
}
}

void PrintLink(LinkList L) //輸出鏈表
{
LNode P = L->next;
while(P) //遍歷鏈表L
{
printf("%d ", P->data);
P = P->next;
}
printf("\n");
}

int Strcompare(LinkList S, LinkList T)//比較兩個串的大小
{
LNode PS, PT;

PS = S->next;
PT = T->next;

while(PS && PT) //遍歷鏈表A
{
if (PS->data > PT->data)
return 1;
else if (PS->data < PT->data)
return -1;
PS = PS->next;
PT = PT->next;
}

if (PS)
return 1;
else if (PT)
return -1;
else
return 0;
}

LinkList CreateList(ElemType a[], ElemType len)//用來構(gòu)造一個鏈表
{
LNode L, S;
ElemType i;

L = InitList(); //構(gòu)造一個空的線性表
for(i=0; i<len; i++)
{
S = NewLNode(a[i]); //構(gòu)造一個數(shù)據(jù)域為a[i]的新結(jié)點
ListInsert(L, S); //把新結(jié)點S插到頭結(jié)點后面。
}
return L;
}

LinkList InitList(void) //構(gòu)造一個空的線性表
{
LNode Head;

Head = (LNode)malloc(sizeof(struct Node)); //為鏈表的頭結(jié)點分配空間
if(!Head)
{
printf("Out of space!");
return NULL;
}
Head->next = NULL;
return Head;//返回頭結(jié)點
}

LNode NewLNode(ElemType X)//構(gòu)造一個數(shù)據(jù)域為X的新結(jié)點
{
LNode S;

S = (LNode)malloc(sizeof(struct Node));//為新結(jié)點分配空間
if(!S)
{
printf("Out of space!");
return NULL;
}
S->data = X;
S->next = NULL;
return S;//返回新結(jié)點
}

//線性表L已存在。 操作結(jié)果:在線性表L中尋找值為X的結(jié)點,若找到則返回該結(jié)點的前驅(qū),否則返回NULL。
LNode FindPrefious(ElemType X, LinkList L)
{
LNode P = L;

while(P->next && P->next->data != X)//遍歷鏈表尋找值為X的結(jié)點
P = P->next;
if(!P->next) //如果找不到值為X的結(jié)點,返回NULL
return NULL;
else //若找到則返回該結(jié)點的前驅(qū)P
return P;
}

//初始條件:線性表L中結(jié)點P已找到,新結(jié)點S已構(gòu)造。。 操作結(jié)果:在該結(jié)點之前插入新結(jié)點X。
void ListInsert(LNode Pre, LNode S)
{
S->next = Pre->next;
Pre->next = S;
}



查看完整回答
反對 回復(fù) 2022-05-16
?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗 獲得超6個贊

一寫這樣的程序就找到了上學(xué)時的感覺。
本程序在VS2008下運行通過,如需ANSI C++編譯器下運行,請將Console替換成標(biāo)準(zhǔn)輸入輸出Cout和Cin,如需ANSI C編譯器下運行,請將Console替換成printf和Scanf
程序如下:
#include "stdlib.h"
#include "string.h"
using namespace System;

#define NULL 0
#define TRUE 1
#define FALSE 0

typedef int BOOL;

typedef struct NODE
{
int data;
struct NODE*next;
}Node;

/***********測試數(shù)據(jù)*************************/
void CreateList(Node *pHeadA,Node *pHeadB) //構(gòu)造兩個鏈表
{
Node *p,*q;

int i=0;

p=pHeadA;

for(i=0;i<100;i++)
{
q=new Node;
q->data=i;
q->next=NULL;
p->next=q;
p=q;

}

p=pHeadB;
for(i=50;i<150;i++)
{
q=new Node;
q->data=i;
q->next=NULL;
p->next=q;
p=q;

}

}
void DisplayList(Node *pList) //遍歷鏈表
{
Node *p;

if(pList->next!=NULL) p=pList->next;

while (p!=NULL)
{
Console::Write(p->data);
Console::Write(" ");
p=p->next;
}
}
/******************************************/

BOOL IsExistInList(Node *pList,int nValue) //判斷值nValue是否在鏈表中存在
{
Node *p;

if(pList->next!=NULL) p=pList->next;
else
{
return FALSE;
}

while (p!=NULL)
{
if(p->data==nValue) return TRUE;
p=p->next;
}

return FALSE;

}

void Union(Node *pListA,Node *pListB,Node *pListC) //將鏈表A,B,連接成表C
{

Node *p,*q;

p=pListC;
while(pListA!=NULL || pListB!=NULL) //遍歷A,B鏈表的所有有節(jié)點,逐一判斷在pListC中是否存在,不存在則插入
{
pListA=pListA->next;
pListB=pListB->next;

if(pListA!=NULL) //對于鏈表A
{
if(!IsExistInList(pListC,pListA->data)) //如果不存在則插入
{
q=new Node;
q->data=pListA->data;
q->next=NULL;
p->next=q;
p=q;
}

}
if(pListB!=NULL) //對于鏈表B
{
if(!IsExistInList(pListC,pListB->data)) //如果不存在則插入
{
q=new Node;
q->data=pListB->data;
q->next=NULL;
p->next=q;
p=q;
}

}
}

}

int Strcompare(char *pStrA,char *pStrB) //字符串比較
{
char *p1=pStrA,*p2=pStrB;
while(*p1!='\0' && *p2!='\0')
{
if(*p1<*p2) return -1;
else if(*p1>*p2) return 1;
p1++;
p2++;
}
if (strlen(p1)>strlen(p2))
{
return 1;
}
else if(strlen(p1)<strlen(p2))
{
return -1;
}
else return 0;
}
int main(void)
{

Node *pHeadA,*pHeadB; //初始化鏈表頭
pHeadA=new Node;
pHeadA->data=-999;
pHeadA->next=NULL;
pHeadB=new Node;
pHeadB->data=-999;
pHeadB->next=NULL;

CreateList(pHeadA,pHeadB); //建立兩個測試鏈表
DisplayList(pHeadA); //顯示鏈表
Console::WriteLine();
DisplayList(pHeadB);
Console::WriteLine();

Node *pHeadC; //建立目的鏈表
pHeadC=new Node;
pHeadC->data=-999;
pHeadC->next=NULL;
Union(pHeadA,pHeadB,pHeadC); //合并鏈表
DisplayList(pHeadC);

int n=Strcompare("wuchunlei","wuchunlei"); //比較兩個字符串
n=Strcompare("wuchunlei","wuchunleil");
n=Strcompare("wuchunleil","wuchunlei");
n=Strcompare("wuchunlai","wuchunlei");
n=Strcompare("wuchunlei","wuchunlai");
n=Strcompare("wuchunlei","auchunlei");

Console::Read();

return 0;
}



查看完整回答
反對 回復(fù) 2022-05-16
  • 2 回答
  • 0 關(guān)注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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