如何把連結串列b鏈在連結串列a之後,形成新連結串列c

2022-11-23 05:31:14 字數 5451 閱讀 3270

1樓:有錢買不起房子

1、如果你不保留連結串列a和b,那麼將a的最後一個節點的後續指向b的表頭,

a的表頭就是c的表頭head.

a1->next=b1->head

2、如果要保留a和b,先向c插入a的所有連線的節點,假如到p,然後在插入b所有連線的節點

while(a!=null)

2樓:痛楚心疼

c語言封筆*/

#include

#include

#define null 0

#define dd sizeof(struct stu)

struct stu;

int n=0;

struct stu *create(void)/*建立*/

}p2->next=null;

return(head);

}void output(struct stu *head)/*輸出*/

}/*插入*/

struct stu *charu(struct stu *head)} }

if(p1->numnum)

return(head);

}/*刪除*/

struct stu *delect(struct stu *head) }

return(head);

}/*修改*/

struct stu *xiugai(struct stu *head)

p1=p1->next;

} return(head);

}void main()}

3樓:匿名使用者

連起來以後就是連結串列c啦,用連結串列b的表頭做c的表頭就行了

4樓:匿名使用者

直接在a申請多點的空間就可以了。在做個賦值語句就可以。

誰告訴我c++裡的連結串列是什麼東西啊?

5樓:飲水思春

連結串列是一種有序的列表,連結串列的內容通常是儲存與記憶體中分散的位置上。

連結串列的方式有兩種1:一種是利用陣列結構串連的有序列表。

例如;兩個陣列,一個存放資料,另一個存放連線的關係。這種缺乏彈性。

2:以動態記憶體配置的連結串列,(通常指的連結串列是一動態記憶體分配的連結串列)動態記憶體配置的連結串列,

是由許許多多的(node)所連結而成的,每一個結點,包含了資料部分和指向下一個結點的指標(pointer)。

以動態記憶體配置的連結串列,在插入和刪除元素的時候,只需要將指標改變指向就可以。

連結串列和陣列一樣是一種資料結構,如何使用完全基於你的應用需求。

連結串列和c++語言本身沒有任何聯絡。很多語言都可以實現連結串列資料結構。

我講一下資料和連結串列的區別有可能幫助你對連結串列的使用有個感覺。

陣列是將元素在記憶體中連續存放,由於每個元素佔用記憶體相同,所以你可以通過下標迅速訪問陣列中任何元素。但是如果你要在陣列中增加一個元素,你需要移動大量元素,在記憶體中空出一個元素的空間,然後將要增加的元素放在其中。同樣的道理,如果你想刪除一個元素,你同樣需要移動大量元素去填掉被移動的元素。

連結串列恰好相反,連結串列中的元素在記憶體中不是順序儲存的,而是通過存在元素中的指標聯絡到一起。比如:上一個元素有個指標指到下一個元素,以此類推,直到最後一個元素。

如果你要訪問連結串列中一個元素,你需要從第一個元素開始,一直找到你需要的元素位置。但是增加和刪除一個元素對於連結串列資料結構就非常簡單了, 只要修改元素中的指標就可以了。

從上面的比較你可以看出,如果你的應用需要快速訪問資料,很少或不插入和刪除元素,你就應該用陣列;相反, 如果你的應用需要經常插入和刪除元素你就需要用連結串列資料結構了。然後你自己可以想一想什麼樣的應用用連結串列合適。

另外,建議你找一本好一點的關於資料結構的書,裡面應該關於連結串列和其上演算法的詳細介紹。連結串列本身是一個複雜的資料結構,而且包括很多種類,比如單向連結串列,雙向連結串列,樹,圖等,不是一篇文章可以介紹得清楚的。

6樓:匿名使用者

連結串列算是種資料結構吧。

說白了就是記憶體裡非連續的記錄用指標給串聯起來,主要注意的是第一個節點和最後個節點只有一個指標,中間的都有兩個指標。像插入或者刪除節點,其實就是修改指標的過程。

#include

#define max 10

struct list ;

typedef struct list node;

typedef node *link;

link createlist(link head)else

head->next = null;

printf("建立指向首節點的節點\n");

pointer = head;

while(1)

else

printf("儲存資料項到節點\n");

new->number = newnumber;

for(i=0;iname[i] = newname[i];

}new->next = null;

printf("新節點作為當前節點的下一節點\n");

pointer->next = new;

printf("當前節點指向新節點,完成組鏈\n");

pointer = new;

}}return head;}}

void printlist(link head)}void freelist(link head)}int main()

return 0;

}以上是連結串列的建立和釋放

結果為首節點記憶體分配

輸入首節點資料項2 ( <=10 char ) : aaa儲存資料項到首節點

建立指向首節點的節點

新節點分配記憶體

輸入新節點資料項2 '0' 退出 : bbb儲存資料項到節點

新節點作為當前節點的下一節點

當前節點指向新節點,完成組鏈

新節點分配記憶體

輸入新節點資料項2 '0' 退出 : ccc儲存資料項到節點

新節點作為當前節點的下一節點

當前節點指向新節點,完成組鏈

新節點分配記憶體

輸入新節點資料項2 '0' 退出 : ddd儲存資料項到節點

新節點作為當前節點的下一節點

當前節點指向新節點,完成組鏈

新節點分配記憶體

輸入新節點資料項2 '0' 退出 : 0

節點輸入完畢

列印連結串列

資料項1 資料項2

1 aaa

2 bbb

3 ccc

4 ddd

釋放節點 1

釋放節點 2

釋放節點 3

釋放節點 4

7樓:戚凱斐

我是一個大四的。就你的問題我可以從一下的幾個方面來解釋「1 你c++基礎怎麼樣?如果不好,那就沒辦法了,重新去看看那些基礎的東西

2 如雨你的基礎比較的好,那就沒問題了。只要原理明白了就好了,原理主要:

其實連結串列從表面上的意思就很好理解。璉起來的一張表而已。就是把一些資料儲存起來,分為幾個獨立的單元儲存。

你要去訪問護著操作這些單元,你必須有個頭,就是從什麼地方去訪問,一般就叫頭連線。一般這個都是告訴你的,然後就是根據提示,你去訪問其他的了,給的提示就是下一個單元的地址,你可以把這些單元看成你要去拜訪的人,你只知道第一個人的地址,第二個人的地址可以從第一個那裡得到,第三個人的地址可以第二個人那裡得到,已次類推。。。。。。,所以一個單元包括了兩個能容,一個是下個已人的地址,一個是你要拜訪(訪問)的能容,能容可以有多個。

其他的雙向連結串列等都是在這個基礎上加上的。。。。。。。

不知道明白了沒有。。。。。。。。

8樓:匿名使用者

c++裡的連結串列,只能是std::list了,搜尋stl, list

9樓:匿名使用者

連結串列是指將若干個資料項按一定的規則連線起來的表,其中的資料項成為結點。連結串列是一種常見的重要的資料結構。它是動態地進行儲存分配的一種結構。

它可以根據需要開闢記憶體單元。連結串列有一個「頭指標」變數,以head表示,它存放一個地址。該地址指向一個元素。

連結串列中每一個元素稱為「結點」,每個結點都應包括兩個部分:一為使用者需要用的實際資料,二為下一個結點的地址。因此,head指向第一個元素:

第一個元素又指向第二個元素;……,直到最後一個元素,該元素不再指向其它元素,它稱為「表尾」,它的地址部分放一個「null」(表示「空地址」),連結串列到此結束。

10樓:匿名使用者

計算機中為了儲存資料用了兩種線性表的結構,一種是陣列,另一種就是連結串列了。

由於需要儲存的資料並不是總是知道其大小的,利用陣列來儲存就有大小限制和空間浪費問題,另外對於很大的資料結構往往找不到足夠大的空間直接來儲存,這樣就要求把資料分成小份,分別儲存。而為了能夠依次找到各個資料,他們之間應該有「線索」可循。這就是連結串列的必要性。

連結串列就是要「順藤摸瓜」,我儲存連結串列時,只要給定連結串列頭,就能依次找到其他的結點資料。這樣方便了運用。

最簡單的連結串列也要有資料部分和一個指標來組成,資料部分就是用來儲存資料的,指標指向下一個節點的位置,用來尋找下一個的。這樣一來只要頭連結串列知道了,所有的內同都就能找出來了。

定義使用連結串列一般要以下幾步:

首先,定義連結串列節點

typedef struct studentstud;

上面的是學生資訊的節點的定義,每個學生的資訊有:姓名、性別、地址等,最後一行是指標,指向自己同類的一個指標型別。

再次,定義連結串列頭:

stud head;定義了連結串列頭

head.next=null;定義下一個元素為空

然後再依次定義個個資訊變數。

再次,使用時:

stud newstu;定義新同學節點

……依次給各個節點賦值。

newstu.next=head.next;

head.next=newstu;這兩句話把新同學加到連結串列頭上,(加到頭上比較方便,如果要加到尾部,每次都得用while迴圈找到尾節點)

再次加入心同學時,使用:new來重新分配空間,然後還是上面的語句就可以加入心同學了。

最後,用完了要歸還,使用delete來釋放用過的每個節點。

以上的例子只是一個簡單的應用,二叉樹,圖都能用連結串列來實現,就是最後那個指標多要幾個就行了。如果想知道詳細,建議看看資料結構的書籍

j**a實訓題,建立兩個單連結串列a、b,要求a、b的元素按升序排列,輸出單連結串列a、b,然後將a、b合併成單連結串列c

11樓:付哥的技術課堂

1、使用collections 的sort(listlist) 根據元素的自然順序 對指定列表按升序進行排序。完成對a和b的排序。

2、利用arraylist的boolean addall(collection<? extends e> c)

按照指定 collection 的迭代器所返回的元素順序,將該 collection 中的所有元素新增到此列表的尾部。

類似於c = a.addall(b)

3、參考步驟1 對c排序。

C語言中如何實獲取單向連結串列的頭指標

首先你的問bai題有點小小的誤解,頭指du針意zhi思為指向連結串列頭結點的一dao個指標,你內必須自己定容義一個連結串列結點型別的指標,並指向那個連結串列的頭結點就可以了 何來獲取一說,因為本身就是你自己定義的 你的問題應該是如何獲取單項鍊表的頭結點。常見的解決方案共有以下幾種 1.宣告連結串列後...

C語言中如何將連結串列儲存為檔案,C語言中如何將一個連結串列儲存為檔案?

第一步 建立檔案 比如說 file fp fopen 第二步 寫一個迴圈,把連結串列的節點一個一個寫進檔案裡。第三部 記得關閉檔案 1 基本思想是通過遍歷的方式儲存 資料,不儲存指標域 還原的時候,根據儲存的方式讀取資料,再建連結串列。2 比如單連結串列,一次遍歷可以得到一個一維陣列,儲存該陣列即可...

在excel中怎麼把B1 B20換成1,B21 B80換成2,B81 B100換成3,謝謝

沒有規律!在名稱框輸入 b1 b20 enter 回車 在編輯欄輸入 1按ctrl enter 在名稱框輸入 b21 b80 enter 在編輯欄輸入 2按ctrl enter 下面的參照操作。誤解了 選h2 m21 在編輯欄輸入 if mid a2,2,len a2 1 21,1,if mid a...