題目:試著編寫乙個演算法,空間複雜度為o(1),將帶頭結點的單鏈表a中的元素全部逆置。
思想:本題看似是乙個反轉的題目,但是卻與普通的資料逆置略微有所區別,眾所周知,單鏈表的元素插入有頭插法和尾插法,其中,頭插法其實在輸出時候就相當於逆置的順序輸出格式,所以本題只需要將第乙個節點單獨取出來儲存,對後面的所有元素在頭結點l(或者叫head)後面再做一遍頭插法就好了。
**展示:
#include #include #include /*
* 題目:試著編寫乙個演算法,空間複雜度為o(1),將帶頭結點的單鏈表a中的元素全部逆置。
* */
typedef struct linknode
linknode,*linklist;
void initlinklist(linklist &l)
void insertlinklist(linklist &l,int x)
void print(linklist l)
printf("\n");
}void reverse(linklist &l)
}int main()
print(l);
reverse(l);
printf("逆置後");
print(l);
return 0;
}
資料結構(線性表)
1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...
資料結構 線性表
參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...
資料結構 線性表
線性表是最基礎的一種資料結構,這樣的資料物件包含的資料元素具有一對一的前驅後繼關係。按其邏輯儲存方式的不同可分為兩類線性表 順序表和鏈式表。其中鏈式表又可分為線性鍊錶 迴圈鍊錶和雙向鍊錶。下面分別介紹下這幾種線性表的資料結構 1.順序表 typedef struct sqlist 插入演算法 i到n...