資料結構鍊錶

2021-08-03 22:33:04 字數 2994 閱讀 2188

正文**:

#include

#include

typedef int datatype;

#include "linlist.h"

void combine(slnode *head1, slnode *head2);

void insertsort(int a, int n);

void main()

printf("\n");

//建立第二個鍊錶接收從鍵盤輸入的鍊錶資料

printf("請輸入任意個數的資料元素完成第二個鍊錶:\n");

getchar();

while(scanf("%d",&x))

//顯示當前鍊錶資料元素

printf("鍊錶一的資料元素為:");

for(i= 0; i < listlength(head1); ++i)

printf("\n");

printf("鍊錶二的資料元素為:");

for(i= 0; i < listlength(head2); ++i)

printf("\n");

//合成兩個鍊錶

combine(head1,head2);

}void combine(slnode *head1,  slnode *head2)

r= p;

p= p->next;

r->next= q;

q->next= p;

//將以head1為頭節點的鍊錶中的資料元素輸出

printf("將以head1為頭節點的鍊錶中的資料元素輸出:");

for(i= 0; i

printf("\n");

//將鍊錶head1資料放入data陣列中並排序

for(i= 0; i < listlength(head1); ++i)

insertsort(a,listlength(head1));

//將排序後的資料元素按序放入新建的鍊錶com中並輸出

for(i= 0; i < listlength(head1); ++i)

listinsert(com,i, a[i]);

printf("排序後的鍊錶com資料元素分別顯示為:");

for(i= 0; i < listlength(com); ++i)

printf("\n");

}else

s= q;

q= q->next;

s->next= p;

p->next= q;

//將以head2為頭節點的鍊錶中的資料元素輸出    

printf("將以head2為頭節點的鍊錶中的資料元素輸出:");

for(i= 0; i

printf("\n");

//將鍊錶head2資料放入data陣列中並排序

for(i= 0; i < listlength(head2); ++i)

insertsort(a,listlength(head1));

//將排序後的資料元素按序放入新建的鍊錶com中並輸出

for(i= 0; i < listlength(head2); ++i)

listinsert(com,i, a[i]);

printf("排序後的鍊錶com資料元素分別顯示為:");

for(i= 0; i < listlength(com); ++i)

printf("\n");}}

//直接插入排序

void insertsort(datatype a, int n)

}}標頭檔案 「linlist.h」

#include

typedef int datatype;

#include

typedef struct node

slnode;

void listinitiate(slnode **head)      /*初始化*/

int listlength(slnode *head)

return size; }

int listinsert(slnode *head, int i, datatype x)

/*在帶頭結點的單鏈表head的資料元素ai(0 ≤ i ≤ size)結點前*/

/*插入乙個存放資料元素x的結點*/

if(j != i - 1)

/*生成新結點由指標q指示*/

if((q = (slnode *)malloc(sizeof(slnode))) == null) exit(1);

q->data = x;

q->next = p->next;      /*給指標q->next賦值*/

p->next = q;       /*給指標p->next重新賦值*/

return 1; }

int listdelete(slnode *head, int i, datatype *x)

/*刪除帶頭結點的單鏈表head的資料元素ai(0 ≤ i ≤ size - 1)結點*/

/*刪除結點的資料元素域值由x帶回。刪除成功時返回1;失敗返回0*/

if(j != i - 1)

s = p->next;      /*指標s指向資料元素ai結點*/

*x = s->data;     /*把指標s所指結點的資料元素域值賦予x*/

p->next = p->next->next;  /*把資料元素ai結點從單鏈表中刪除指*/

free(s);      /*釋放指標s所指結點的記憶體空間*/

return 1; }

int listget(slnode *head, int i, datatype *x)

/*取資料元素ai和刪除函式類同,只是不刪除資料元素ai結點*/

if(j != i)

*x = p->data;

return 1; }

void destroy(slnode **head)

*head = null; }

資料結構 鍊錶

鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...

資料結構 鍊錶

鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...

資料結構 鍊錶

一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...