鍊錶的建立,插入,刪除,輸出基本操作

2022-06-12 13:57:12 字數 1974 閱讀 5242

#include

#include

struct student  //定義乙個學生結點,結點包括值域和指標域

;typedef struct student list;

list *createlist();

list *insertnode(list *h,list *s);

list *deletenode(list *h,long no);

void display(list *h);

int main()

return 0;

}/*鍊錶的建立*/

list *createlist()

return head;

}/*鍊錶結點的插入*/

list *insertnode(list *h,list *s)

else

if(s->num<=p->num)

else//若插入的結點在中間位置

}else

}return h; 

}/*鍊錶結點的元素刪除*/ 

list *deletenode(list *h,long no)

while(q->num!=no&&q!=null)//查詢帶刪結點,並儲存其上乙個結點

if(q->num==no)

else

}else

return h;

}/**********************************note*******************************

鍊錶主要通過指標進行訪問,因此,他的位址不是連續的。因此,

鍊錶無法實現隨機儲存,鍊錶的元素查詢,需要從頭結點開始逐

個掃瞄進行查詢。鍊錶是一種動態結構,相對於順序表而言,在

執行插入和刪除過程不需要移動大量的元素,執行效率大大提高。

以下就演算法的四個基本操作進行總結。

鍊錶的建立:(此處採用尾插法,並且鍊錶元素有序)

1、定義四個指標*h,*rear,*cur,*p;分別代表頭指標,尾指標(指向

鍊錶最後乙個結點的指標),當前結點的指標,輔助指標

2、將頭指標指向null(此處為了統一所有操作,鍊錶都帶有頭

結點,h=null,目的是建立乙個全新的鍊錶)

3、為全新的鍊錶新增結點,由於是動態的,建立乙個結點先要

申請記憶體,然後為其賦值,最後將其插入鍊錶。由於鍊錶的三個

部分(首部,尾部,中間)的不同,一般插入時要予以判斷,

進行不同操作。具體如下:(初始時p=h)

1)申請乙個結點並初始化

cur=(list *)malloc(sizeof(list));

cur->next=null;

scanf("%d %s %s",&cur->num,&cur->name,&cur->address);//此步根據結點的定義來決定

2)插入鍊錶

當鍊表為空時

if(h==null)

h=cur;

當鍊表不空時,通過某一參值比較,知道插入的位置(此處以num為參值)

while(p->numnum&&p!=null)

p=p->next;

if(p==h)//當插入位置為第乙個結點時

else if(p->next==null)//當插入位置為最後乙個結點之後

else//當插入位置在中間時

插入完成,返回鍊錶return h;

鍊錶的插入:略,操作與鍊錶的建立相同

鍊錶的刪除:

查詢與刪除,根據刪除的參值進行查詢刪除元素前乙個元素的位置(此處參值為num,前一元素指標*pre)

1)如果鍊錶為空,則查詢失敗,輸出提示資訊

if(h==null)

printf("鍊錶為空,查詢失敗!\n")

else

if(p->num==no)

else

printf("鍊錶中不存在這個結點,刪除失敗!\n");

}return h;

c 鍊錶的基本操作建立,插入,刪除,輸出。

include include include define n sizeof struct node using namespace std struct node void jianli node head,int n 建立鍊錶 p2 next null void charu node head...

鍊錶的簡單操作 建立,輸出,插入,刪除

include include define len sizeof struct student int n 0 節點數量 struct student head struct student creat void p2 next null return head void add int n 插入...

鍊錶的基礎操作建立插入刪除輸出

include using namespace std node creat int n 建立有個n個結點的單鏈表 node insert node h,int m,int l 在單鏈表的第幾個元素之後插入值l node remove node h,int t,int n 刪除鍊錶中值為t的元素 v...