C語言 刪除遞增有序線性表中的重複元素

2021-10-24 11:03:47 字數 1028 閱讀 5689

將乙個遞增有序的線性表中的重複元素刪去。

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 初始條件 無 操作結果 構造乙個空的線性表。成功返回...