將乙個遞增有序的線性表中的重複元素刪去。
1. 跳過重複元素:利用*p指向最後乙個不重複的指標,num記錄最後乙個不重複的data,當遇到重複元素時,l=l->next;當遇到不重複值時,p->next=l,num=l->data,p=l,l=l->next,更新相應資訊。
2. 刪除後繼重複元素:因為遞增有序,重複元素邏輯上連在一起,因此每次遇到重複元素時,p->next=p->next->next,指向更後一位元素。
#include
#include
typedef
struct lnodelnode,
*linklist;
void
noduplicate1
(linklist &l)
// else
// }
if(l->next==
null
)return
; lnode *p=l->next;
//記錄最後乙個不重複元素
lnode *s=l;
//如果要基於原鏈操作,儲存l的原指標
int num=p->data;
//記錄最後乙個不重複元素的值
l=l->next->next;
while
(l!=
null
)else
} l=s;
//還原原指標
}void
noduplicate2
(linklist &l)
else p=p->next;}}
intmain()
s->next=
null
;// noduplicate1(l);
noduplicate2
(l);
while
(l->next!=
null
)return0;
}
有序線性表的有序合併
對於這個問題其實想法很簡單,已經已知線性表是有序的,那麼我們只需要比較值的大小放入另外乙個陣列中或者直接輸出 要考慮的是兩個輸入序列的邊界問題。這個問題在 中注釋,也是常用的迴圈兩個線性表的方法。已知線性表 la 和 lb 中的資料元素按值非遞減有序排列,現要求將 la 和 lb 歸併為乙個新的線性...
C語言線性表
include include include 定義乙個linearlist結構體 typedef struct linearlist linearlist 初始化線性表 param 無 return linearlist linearlist initlinearlist return ptr 插...
C語言 線性表
include include include define list size 100 define list increment 10 typedef int datatype typedef structseqlist initlist l 初始條件 無 操作結果 構造乙個空的線性表。成功返回...