單向鍊錶的基本操作以及結點資料去重的兩種方法

2022-06-30 14:15:13 字數 1195 閱讀 1134

typedef long elemtype;

#define error 0

#define ok 1

typedef struct node

node;

int countnum;

void createnode(node** list)//建立乙個鍊錶,且賦值從0開始

elemtype getelem(node* trvp, int n)//返回鍊錶中第n個元素的值

int insertline(node* trvp, int n, elemtype newdata)//在第n位置插入乙個結點

if (!trvp || i > n - 1) return error;

node* insertnode = (node*)malloc(sizeof(node));

insertnode->data = newdata;

insertnode->pnext = trvp->pnext;

trvp->pnext = insertnode;

}int deleteitem(node* trvp, int n)//刪除第n個結點

if (i > n - 1 || !trvp->pnext) return error;

node* temp = trvp->pnext;

trvp->pnext = temp->pnext;

free(temp);

return ok;

}int clearitem(node* hnodep)//清空乙個鍊錶

return ok;

}//在鍊錶中刪除相同資料的結點,採取的方法是建立乙個新的鍊錶,新的資料加入到新鍊錶當中,重複的跳過,時間複雜度是n平方

node* dele_same_one(node* trvp)

} if (!tag)

}return newhead;

}//第二種方法節約空間,因為在原來鍊錶基礎上,把頭和後面的結點分離,把含不同資料的結點移動到頭上,相同的釋放,且接過來的放在頭結點的後面使得順序發生改變

node* dele_same_two(node* trvp)

if (!newlist)

else

trvp = succ;

} return newhead;

}int main()

帶頭結點的單向鍊錶的基本操作

include include struct node typedef struct node node typedef struct node link void create node link new node void create head link head 帶頭結點的單向鍊錶初始化 v...

單向鍊錶的基本操作

這篇文章也是為了複習下,同時為字典樹做下準備 鍊錶操作包括建立,刪除,增加,排序,輸出等操作,後續將 貼上 單向鍊錶 head null 空鍊錶 head p1 p2 pn null p1 next p2 next pn next include include int n 0 節點個數 typed...

單向鍊錶的基本操作

pragma once include include include include typedef char linktype typedef struct linknode linknode void linklistinit linknode head 初始化鍊錶 linknode link...