鍊錶的操作(有頭無頭)

2021-09-28 10:46:23 字數 1627 閱讀 1430

//尾插法建立單鏈表 

struct node* buildlinkedlist(int* arr, int n)

return head;

}//頭插法建立單鏈表

struct node* buildlinkedlist(int* arr, int n)

return head;

}; //不帶頭節點的鍊錶操作

//返回首次出現x的位置 (即查詢某個元素)

position find( list l, elementtype x )

return error;

}//將x插入p指向的節點之前,如果p指向非法位置,列印wrong position

list insert( list l, elementtype x, position p )

while(l)

if(!l)

l->next=(list)malloc(sizeof(struct lnode));

l->next->data=x;

l->next->next=p;

return head;

}//將位置p的元素刪除並返回鍊錶的表頭

list delete( list l, position p )

list head=l;

while(l)

if(!l)

l->next=p->next;

free(p);

return head;

}//帶頭節點的鍊錶操作

list makeempty()

//返回線性表中x的位置

position find( list l, elementtype x )

return error;

}//將x插入在位置p指向的結點

bool insert( list l, elementtype x, position p )

if(head->next!=p)

head->next=(list)malloc(sizeof(struct lnode));

head->next->data=x;

head->next->next=p;

return true;

}//將位置p的元素刪除並返回true

bool delete( list l, position p )

while(head->next)

if(head->next!=p)

head->next=p->next;

return true;

}// 不帶空節點的鍊錶反轉

void reverse(node *phead)

*phead=newhead;

} //鍊錶去重(帶頭節點)

void unique(link *l)

else

}p=p->next;

} }

//鍊錶合併

void mergelist_l(linklist la, linklist lb, linklist lc)

else

}pc->next = pa?pa:pb;//插入剩餘段

free(lb);

}

無頭結點鍊錶

include include linklist.h struct node create linklist creat linklist 根據使用者輸入,建立乙個單鏈表 struct node pnew struct node malloc sizeof struct node pnew data...

無頭雙向鍊錶

class node public class mylinkedlist else 尾插法 public void addlast int data else private void checkindex int index private node searchindex int index r...

無頭雙向鍊錶方法

public class doublelinkedlist 尾插法 public void addlast int data 任意位置插入,第乙個資料節點為0號下標 public boolean addindex int index,int data 查詢是否包含關鍵字key是否在單鏈表當中 pub...