當前位置:首頁 » 編程語言 » c語言鏈表的查詢

c語言鏈表的查詢

發布時間: 2024-03-06 18:21:54

c語言!!!程序設計:建立一個學生信息鏈表,包括學號,姓名,成績.(實現添加,刪除,查詢,排序,平均)

代碼如下:

/*用c語言鏈表編寫一個學生信息系統程序,要求輸出學生的學號,姓名,性別,學號,姓名,成績(實現添加,刪除,查詢,排序,平均)*/

#include <stdio.h>

#include <iostream>

#include <string.h>

#include <stdlib.h>

using namespace std;

const int n=5;

/*

* nodeEntry : 節點數據類型

* nodeADT : 節點結構

* linkADT : 鏈表結構

*/

typedef struct Student

{

int num;

char name[30];

char sex;

float score1;//語文

float score2;//數學

float score3;//英語

//struct Student *next;

}Student;

typedef struct linkCDT {

nodeADT head;

}*linkADT;

/*

* InitLink : 初始化鏈表

* CreateNode : 創建節點

* AppendLink : 添加數據

*/

nodeADT CreateNode(Student entry) {

nodeADT p=(nodeADT)malloc(sizeof*p);

p->entry=entry,p->next=0;

return p;

}

/*

SortLink : 排序鏈表

//按學號排序

void SortLinkID(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (pHead->entry.num>=p->entry.num)

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}

//按英語成績排序

void SortLinkEnglish(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (pHead->entry.score3>=p->entry.score3)

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}

}

//按姓名的字典序進行排序

void SortLinkName(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (pHead->entry.name[0]>=p->entry.name[0])

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}

}

//按姓名的長度進行排序

void SortLinkNameLength(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (strlen(pHead->entry.name)>=strlen(p->entry.name))

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}

循環鏈表是與單鏈表一樣

是一種鏈式的存儲結構,所不同的是,循環鏈表的最後一個結點的指針是指向該循環鏈表的第一個結點或者表頭結點,從而構成一個環形的鏈。

循環鏈表的運算與單鏈表的運算基本一致。所不同的有以下幾點:

1、在建立一個循環鏈表時,必須使其最後一個結點的指針指向表頭結點,而不是象單鏈表那樣置為NULL。此種情況還使用於在最後一個結點後插入一個新的結點。

2、在判斷是否到表尾時,是判斷該結點鏈域的值是否是表頭結點,當鏈域值等於表頭指針時,說明已到表尾。而非象單鏈表那樣判斷鏈域值是否為NULL。

以上內容參考:網路-鏈表

❷ c語言怎麼查表

查表是數據結構中的一個概念。查表的前提是先建表。

在C語言實現中,建表也就是將一系列的數據,或者有原始數據中提取出的特徵值,存儲到一定的數據結構中,如數組或鏈表中。
查表的時候,就是對數組或鏈表查詢的過程。常用的方式有如下幾種:
1 對於有序數組,可以採用折半查找的方式快速查詢。
2 對於鏈表,可以根據鏈表的構建方式,進行針對性查詢演算法的編寫。
3 大多數情況,可以通過遍歷的方式進行查表。即從第一個元素開始,一直順序查詢到最後一個元素,逐一對比。

熱點內容
除了安卓還有什麼可以下載的 發布:2024-11-29 04:05:44 瀏覽:381
coreldraw用戶臨時文件夾 發布:2024-11-29 04:05:44 瀏覽:740
如何設置ipad文件夾 發布:2024-11-29 03:59:16 瀏覽:141
如何給u盤文件夾加密 發布:2024-11-29 03:48:37 瀏覽:693
傳奇打元寶腳本 發布:2024-11-29 03:39:52 瀏覽:843
如何裝linux系統 發布:2024-11-29 03:38:17 瀏覽:183
咋清理緩存 發布:2024-11-29 03:18:38 瀏覽:13
linux伺服器的配置文件 發布:2024-11-29 03:18:31 瀏覽:616
安卓軟體誤刪軟體如何恢復 發布:2024-11-29 02:55:58 瀏覽:233
我的世界安卓手機如何改成官服 發布:2024-11-29 02:43:11 瀏覽:290