雙向迴圈鍊錶的簡單操作

2021-09-06 01:16:30 字數 1783 閱讀 2250

最近看了linux核心**list.h發現大部分都是鍊錶的一些操作,所以就把雙向迴圈鍊錶的一些簡單操作寫了寫,結果發現什麼東西還是要經常練,不然就生疏了;主要實現了雙向鍊錶的增、刪、改、查、排序、及雙向遍歷。

原始碼如下:

#include

#include

#include

#include

typedef struct student

stu,*linklist;

void init(linklist *head)      //初始化頭結點

linklist del(linklist head,int id)  //按學號刪除乙個節點

else

free(p);

return head;   //必須返回頭節點,否則刪除頭結點後,不能正常遍歷鍊錶

}void add_entry(linklist head)    //頭插法新增乙個節點

void add_entry_tail(linklist head)  //尾插法新增乙個節點

int  change(linklist head,int id)   //修改學號為id的學生的資訊

}printf("please input new id and name:\n");

scanf("%d%s",&p->id,p->name);

return 1;

}void swap(stu *p,stu *q)        //交換p和q兩個節點的資料,用於排序

void sort_id(linklist head)   //按學號排序

p=p->next;}}

int find_id(linklist head,int id)    //按學號查詢

} printf("\nthe info of the student is:\n");

printf("id   is :%d\n",p->id);

printf("name is :%s\n",p->name);

return 1;

}int find_name(linklist head,char name)     //按姓名查詢

}printf("\nthe info of the student is:\n");

printf("id   is :%d\n",p->id);

printf("name is :%s\n",p->name);

return 1;          */

//為防止有重名情況不能將所有學生資訊查到,如下處理

dop=p->next;

}while (p != head);

if(flag==0)

return 1;

}void list_for_each(linklist head)   //遍歷每個節點並列印出資訊,按next順序

while (p != head);

}void list_for_each_pre(linklist head)  //遍歷每個節點並列印出資訊,按pre順序

while (p != q);

}linklist add_entry_aftersort(linklist head) //排序後新增乙個節點到合適的位置,使鍊錶仍然按學號有序

p = p->next;

}while (p != head);

if (p == head)

return head;

}int main()

這裡只是一些簡單的操作,如果要做成乙個比較完善的系統,還有很多地方要修改,不過基本的功能基本上都實現。

迴圈雙向鍊錶的建立方法 最簡單的迴圈雙向鍊錶

首先講迴圈鍊錶,簡單來說就是讓鍊錶首尾相連,形成乙個環,因為一般的鍊錶都是單向的,任意給出的乙個節點是不能訪問前面的鏈節,這就導致了單向鍊錶的侷限性,迴圈鍊錶從一定程度上來說就解決了這一問題,通過表頭指標的移動,因為環的特性,可以訪問完整個鍊錶 但是我們不禁會想,如果只是為了訪問已知鏈節的前乙個節點...

雙向迴圈鍊錶基本操作

include include include typedef struct node linklist void clear 清屏 linklist init doublelinklist 初始化雙向迴圈鍊錶 void creat doublelinklist linklist 建立雙向迴圈鍊錶 ...

雙向迴圈鍊錶的基本操作

dlink.h pragma once include typedef int dlinktype typedef struct dlinknode dlinknode dlinknode buynode dlinktype value void destroynode dlinknode posn...