資料結構 鍊錶 練習題1

2021-08-08 23:39:55 字數 2486 閱讀 9835

2.已知乙個帶表頭結點的單鏈表,結點結構為data、link,假設該鍊錶只給出了頭指標list。

在不改變鍊錶的前提下,請設計乙個盡可能高效的演算法,查詢鍊錶中倒數第k個位置上的結點(k正為整數)。

若查詢成功,演算法輸出該結點的data域的值,並返回1;否則,只返回0.要求:

(1)描述演算法的基本設計思想;

(2)描述演算法的詳細實現步驟;

(3)根據設計思想和實現步驟,採用程式語言描述演算法,關鍵之處請給出簡要注釋。

時間複雜度q(n)

#include

#include

#include

//建立乙個整型的鍊錶

typedef struct _numnode numnode;

struct _numnode;

//定義乙個指標的佇列

//資料區域

typedef struct _node node;

struct _node;

//控制區域

typedef struct _queue queue;

struct _queue;

//佇列實現

//建立乙個佇列

queue

* creatqueue()

//判斷是否為空

bool isempty(queue

*queue)

//入隊

void addqueue(queue

*queue,numnode * numnode)

//出隊

numnode * deleteq(queue

*queue)

else

}//整形鍊錶實現

//建立

numnode * creatnumnode()

//新增元素

void addnumnode(numnode * numnode, int num)

numnode * newnode=(numnode *)malloc(sizeof(numnode));

newnode->num=num;

newnode->next=

null;

node->next=newnode;

}//顯示所有元素

void showallnum(numnode *numnode)

}//查詢元素

int findbylastindex(numnode * numnode,int lastindex)

else

numnode1=numnode1->next;

}if(flag==

0) else

}int main()

showallnum(numnode);

printf("%d",findbylastindex(numnode,7));

}

結果

定義鍊錶

為鍊錶新增內容

獲取長度

按長度查詢

宣告乙個鍊錶

做插入操作

獲取長度實現:

用while(p->next!=null)方式獲取長度

按索引查詢指定位置實現:

while(index!=1);

對索引長度進行封裝:

關鍵步驟:findnodebyindex(node,nodelength(node)-index+1);正向變逆向查詢

#include 

#include

#include

//定義鍊錶

typedef

struct _node * node;

struct _node;

//建立乙個鍊錶

node creatnode()

//新增乙個節點

bool addnode(node node,int num)

//獲取鍊錶長度

int nodelength(node node)

return length;

}//正向索引查詢

int findnodebyindex(node node, int index)

else

}printf("found it :%d\n",p->data);

return1;}

//逆向查詢

資料結構 鍊錶基礎練習題

1 反轉鍊錶 定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。definition for singly linked list.function listnode val param head return var reverselist function head ret...

鍊錶練習題1

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...

資料結構練習題

設pa,pb分別指向兩個帶頭結點的有序 從小到大 單鏈表。仔細閱讀如下的程式,並回答問題 1 程式的功能 2 s1,s2中值的含義 3 pa,pb中值的含義。include include typedef struct list list void exam list pa,list pb else...