單雙鏈表練習題

2021-08-15 02:50:28 字數 1793 閱讀 8440

本文是關於鍊錶的一些操作(包括單鏈表和雙向迴圈鍊錶)

1、單鏈表,雙鏈表的建立。

2、單鏈表和雙鏈表的列印。

3、單鏈表的插入,刪除。

4、雙鏈表的插入和刪除。

5、單鏈表的逆置。

6、單鏈表節點的個數。

7、單鏈表,雙鏈表的查詢。

函式**:

//鍊錶相關問題

typedef int datatype;

typedef struct linknode //單鏈表結構

linknode;

linknode *createnode(datatype x) //建立單鏈表節點

tmp->next=null;

tmp->data=x;

return tmp;

}void printlinklist(linknode *phead) //單鏈表列印

printf("\n");

}void insertlinklist(linknode **phead,linknode *pos,datatype x) //單鏈表插入

while(*phead != pos)

newnode = createnode(x);

newnode->next = tmp->next;

tmp->next = newnode;

}size_t listnodecount(linknode* phead) //計算單鏈表的節點數

return count;

}linknode *linklistsearch(linknode *phead,datatype x) //在單鏈表中查詢乙個數

return null;

}linknode *reverselinklist(linknode *phead) //單鏈表的逆置

return first;

}size_t removelinklist(linknode **phead,linknode *pos) //單鏈表任意節點刪除

else

if (first->next == pos) //非頭節點情況

first = first->next;

}return0;}

typedef struct doublelinklist //雙鏈表結構

doublelist;

doublelist *createdoublelist(datatype x) //建立雙鏈表節點

void printdoublelist(doublelist *phead) //列印雙鏈表

printf("\n");

}doublelist *doublelistsearch(doublelist *phead,datatype x) //雙鏈表查詢

return null;

}void doublelistinsert(doublelist **phead, datatype x) //雙鏈表的頭插

else

}size_t removedoublelistnode(doublelist **phead,datatype x) //刪除雙鏈表節點

free(tmp);

tmp = null;

return

1; }

if (*phead == tmp->next)

break;

tmp = tmp->next;

}return

0;}

單鏈表練習題

題目一 假設有兩個按元素值遞增有序排列的線性表 a 和 b,均以單鏈表作儲存結構,請編寫演算法將 a 表和 b 表歸併成乙個按元素值遞減有序 即非遞增有序,允許表中含有值相同的元素 排列的線性表 c,並要求利用原表 即 a 表和 b 表 的結點空間構造 c 表。演算法 誰的值小誰就先插入鍊錶c中,插...

單鏈表相關操作練習題

鍊錶結點結構如下 class node override public string tostring public node next 計算鍊錶的長度。列印出煉表中倒數第k個結點內容。把鍊錶倒轉或者逆序。鍊錶倒序列印但不改變鍊錶的結構 按照鍊錶中的資料大小順序合併兩個鍊錶 public class...

單錶查詢練習題

create table employee id int,name varchar 20 password varchar 20 gender varchar 10 age int default 25,email varchar 50 salary double 8,2 state int,dep...