集合的鏈式儲存及操作實現

2021-06-05 21:05:54 字數 1603 閱讀 5686

typedef int elemtype;

typedef struct snode

node;

/* 1.初始置空集合,即置表頭指標為空*/

void initset(node*& head)

/* 2.向集合中插入乙個元素,插入這裡在表頭插入*/

bool insertset(node*& head,elemtype item)

if (p==null)

else return false;

/* 3.從集合中刪除乙個元素*/

bool deleteset(node*& head,elemtype item)

else

}if (p==null)

if (q==null)//q==null,表明刪除的是表頭結點

else q->next=p->next;

delete p;

return true;

}/* 4.從集合中查詢乙個元素*/

bool findset(node*& head,elemtype &item)/* item 使用引用型別,為了帶回已查詢到的元素 */

else p=p->next;

}return false;

}/* 5.修改集合中的乙個指定元素*/

bool modifyset(node* head,const elemtype item)

else

p=p->next;

}if (p!=null)

else return false;

}/* 6.判斷乙個元素是否屬於集合*/

bool inset(node* head,elemtype item)

else p=p->next;

}return false;

}/* 7.判斷集合是否為空,為空返回真,否則返回假*/

bool emptyset(node* head)

/* 8.求出集合中元素個數*/

int lenthset(node *head)

return len;

}/* 9.輸出集合中所有元素*/

void outputset(node *head)

coutnode *unionset(node * head1,node * head2)

p=head2;

while (p!=null)

return head;

}/* 11.求兩個集合的交集*/

node *interseset(node *head1,node *head2)

p=p->next;

}return head;

}/* 12.按元素的值或關鍵字對集合排序*/

void sortset(node *&head)

else if (q->datadata)

else

else

}q->next=np;

tp->next=q;}}

head=head1;

}/* 13.清除集合中的所有元素,釋放占有的動態儲存空間*/

void clearset(node *head)

head=null;

}

集合 鏈式儲存的實現

集合的順序儲存是通過陣列來實現的,集合的鏈式儲存是通過儲存結點之間的鏈結來實現的,從而形成鍊錶。鍊錶中的每乙個結點都包含乙個值域和乙個指標 即引用物件域 每個結點的指標指向下乙個結點物件,這樣的鍊錶稱之為單鏈表。在單鏈表中,第乙個結點稱之為表頭結點,指向第乙個結點的指標被稱為表頭指標,最後乙個結點稱...

棧的順序儲存實現及鏈式儲存實現

include include define size 100 typedef int elemtype typedef struct stackstack void init stack s 初始化 intpush stack s,elemtype e 入棧 s s s top e 從s 1 開始...

棧的鏈式儲存及常用操作

水水的實現一下鏈式棧。include include include include using namespace std typedef struct sta stack void createstack stack s 建立乙個帶頭結點的鏈棧 void destroystack stack s...