鍊錶 玩轉學生管理系統

2021-09-26 14:54:31 字數 4045 閱讀 2083

前言

這段時間將以前學習的東西整理了下,學欲進,常有疏,乙個人在學習過程中要不斷總結,這樣才會有所收穫。今天來總結下資料結構中煉表的知識,鍊錶無外乎離不開增刪改查,鍊錶(linked list)是一種常見的基礎資料結構,是一種線性表,但是並不會按線性的順序儲存資料,而是在每乙個節點裡存到下乙個節點的指標(pointer)。

兩種鍊錶

(1)單鏈表

從圖中可以看出單向鍊錶只可向乙個方向遍歷,第乙個部分儲存或者顯示關於節點的資訊,第二個部分儲存下乙個節點的位址值。

(2)雙鏈表

1.建立鍊錶

(1)頭插法

從乙個空表開始,重複讀入資料,生成新結點,將讀入資料存放到新結點的資料域中,然後將新結點插入到當前鍊錶的表頭上,直到讀入結束標誌為止。即每次插入的結點都作為鍊錶的第乙個結點

(2)尾插法

頭插入法建立鍊錶雖然演算法簡單,但生成的鍊錶中結點的次序和輸入的順序相反。若希望二者次序一致,可採用尾插法建表。該方法是將新結點插入到當前鍊錶的表尾,使其成為當前鍊錶的尾結點。

2.查詢(兩種返回方式)

(1)按位置查詢

//查詢返回節點位置指標

ldlnode search(dlnode q, int pos)

if (j == pos)

return r;

}

(2)按值查詢

ldlnode search(dlnode q, int data1)

return r;

}

3.修改

//修改某節點資料

void modifynode(dlnode *&h, int pos, int data)

i++;}}

4.刪除

//刪除結點

**void del(dlnode p, int pos)

else

else if (p1->next == null && p1->prior != null)//尾指標

else if (p1->prior == null && p1->next == null)//頭尾都為空

//頭尾都不為空

else

printf(「success! delete data」);}}

5.插入

**//插入結點(在第pos位置上插入data)

int insert(dlnode *&p, int data, int pos)

else

else

else if (p1->prior == null && p1->next == null)

else

}printf(「success insert data」);

}return 0;

}

學生管理系統

#include

#include

typedef struct dlnode dlnode,*ldlnode;

void menu()//功能選單

//建立雙鏈表

void createdlink(dlnode *&p,int n)

r->next = null;

}//鍊錶長度

int get_list(dlnode *head)

return len;

}//查詢節點位置指標

ldlnode find(dlnode *&q, int pos)

if (j == pos)return r;

else return null;

}//查詢結點,返回結點位置

int search(dlnode *q, int pos)

else

return 0;

}//修改某節點資料

void modifynode(dlnode *&h, int pos, int data)

i++;}}

//刪除結點

void del(dlnode *p, int pos)

else

else if (p1->next == null && p1->prior != null)

else if (p1->prior == null && p1->next == null)

else

printf(「success! delete data」);}}

//插入結點(在第pos位置上插入data)

int insert(dlnode *&p, int data, int pos)

else

else

else if (p1->prior == null && p1->next == null)

else

}printf(「success insert data」);

}return 0;

}//列印雙鏈表

void print(dlnode *p)

printf(」\n");

return;

}int main()

printf(「請輸入修改後的的資料:」);

scanf("%d", &data);

printf("\n");

modifynode(head,index,data);

break;

case 4:

printf("\n");

printf(「請輸入查詢的節點:」);

scanf("%d", &index);

search(head, index);

printf("\n");

break;

case 5:

printf("\n");

printf(「請輸入插入的資料:」);

scanf("%d", &data);

printf(「請輸入插入的位置:」);

scanf("%d", &index);

insert(head, data, index);

printf("\n");

break;

case 6:

printf("\n");

print(head);

printf("\n");

break;

default:

printf("\n");

printf(「請輸入正確的選擇\n」);

printf("\n");

break;}}

system(「pause」);

return 0;

}

鍊錶實現學生管理系統

include include include define maxlen 100 struct data 定義鍊錶的元素個體 typedef data elemtype struct sqlist 建立鍊錶 sqlist createlist sqlist l r next null printf...

學生資訊管理系統 鍊錶

實驗內容 定義乙個包含學生資訊 學號,姓名,成績 的鍊錶,使其具有如下功能 1 根據指定學生個數,逐個輸入學生資訊 2 逐個顯示學生表中所有學生的相關資訊 3 根據姓名進行查詢,返回此學生的學號和成績 4 根據指定的位置可返回相應的學生資訊 學號,姓名,成績 5 給定乙個學生資訊,插入到表中指定的位...

學生成績管理系統(鍊錶的實現)

所使用的標頭檔案 include include include 所呼叫的函式 struct link node creat struct link node head 建立新結點 int count node struct link node head 結點計數 void delete node ...