建立乙個學生成績的線性鍊錶,對其實現插入,刪除,輸出,最後銷毀。
#include
#include
struct grade ;
typedef struct grade node;
//typedef為c語言的關鍵字,作用是為一種資料型別定義乙個新名字。
//使用typedef目的一般有兩個,乙個是給變數乙個易記且意義明確的新名字,
//另乙個是簡化一些比較複雜的型別宣告。
struct grade *create(); //建立鍊錶
void insert(node *head,node *pnew,int i); //插入鍊錶
void pdelete(node *head,int i); //刪除列表
void display(node *head); //輸出鍊錶
void pfree(node *head); //銷毀鍊錶
int main(int argc, char *argv)
pnew->score=88;
insert(head,pnew, 3); //將新節點插入節點3的後面
printf("插入後的鍊錶:");
display(head);
pdelete(head,3); //刪除節點3
printf("刪除後的鍊錶:");
display(head);
pfree(head);
return 0;
}struct grade *create()
head->next=null; //頭節點指標域置null
tail=head; // 開始時尾指標指向頭節點
printf("輸入學生成績:");
while(1) //建立鍊錶
pnew->score=score; //新節點資料域存放輸入的成績
pnew->next=null; //新節點指標域置null
tail->next=pnew; //新節點插入到表尾
tail=pnew; //為指標指向當前的尾節點 }
return head; //返回建立鍊錶的頭指標 }
void insert(node *head,node *pnew,int i)
pnew->next=p->next; //插入節點的指標域指向第i個節點的後繼節點
p->next=pnew; //犟第i個節點的指標域指向插入的新節點
}void pdelete(node *head,int i)
q=p->next; //q指向待刪除的節點
p->next=q->next; //刪除節點i,也可寫成p->next=p->next->next
free(q); //釋放節點i的記憶體單元
}void display(node *head)
void pfree(node *head)
free (head); //最後刪除頭節點 }
void pfree(node *head)
free(p); }
**:鍊錶是c語言中比較難,但是又比較重要的資料結構,相信有很多人在為它而頭痛哦。
我做了乙個鍊錶的程式,發出來與大家共享,希望大家能用得著。
#include
#include
#include
#include
//鍊錶單元定義,鍊錶相關變數
struct student
*head,*pthis;
//輸入資料建立鍊錶
void input()
scanf("%d\t%f",&tmp->id,&tmp->score);
tmp->next=null;
if(tmp->id!=0)
else}}
while(tmp->id!=0);
free(tmp);
}
//搜尋鍊錶找到第乙個符合條件的專案輸出
void search(int id)
pthis=head;
while(pthis!=null)
else
}printf("\n沒有找到!\n");
}
//列表輸出鍊錶中的所有項
void list()
pthis=head;
while(pthis!=null)
}
//插入資料
void insert()
printf("\n請輸入插入點:\n");
scanf("%d",&p);
if(p<0)
printf("\n\n請輸入學生的資訊:\nid\t成績\n");
if((tmp=(struct student*)malloc(sizeof(struct student)))==null)
scanf("%d\t%f",&tmp->id,&tmp->score);
tmp->next=null;
if(tmp->id!=0)
else
pthis=pthis->next;
}tmp->next=pthis->next;
pthis->next=tmp;}}
else
}
//追加資料
//刪除資料
void del()
printf("\n\n請輸入要刪除的記錄號:\n");
scanf("%d",&p);
if(p<0)
if(p==0)
else
}tmp=pthis->next;
pthis->next=pthis->next->next;
free(tmp);
}}
//程式主函式
void main()
{char command=0;
int id=0;
//主迴圈do{
printf("\n\n\t 選單\n");
printf("-------------------------------\n");
printf("\ta,輸入資料\n");
printf("\tb,查詢記錄\n");
printf("\tc,資料列表\n");
printf("\td,追加記錄\n");
printf("\te,插入記錄\n");
printf("\tf,刪除記錄\n");
printf("\tg,退出系統\n");
printf("-------------------------------\n");
printf("\t請選擇:");
command=getch();
//命令處理
C語言經典例74 連線兩個鍊錶
連線兩個鍊錶,如有鍊錶a和鍊錶b,將鍊錶b按原順序接在鍊錶a後面,鍊錶結構為 typedef int elementtype typedef struct node list 本題在邏輯上很簡單,不難想出只要得到鍊錶a的最後乙個節點指標,然後將其指向鍊錶b的第乙個節點即可,注意建立鍊錶時,鍊錶帶頭節...
c語言歸併兩個有序鍊錶
歸併有序列表l1,l2到l3,使l3有序,從小到大 xxwu include include include typedef int elemtype typedef struct lnode lnode,linklist 初始化 尾插法 以9999退出 linklist initlisttill ...
合併兩個非降序鍊錶(C語言)
問題描述 兩個非降序鍊錶的並集,例如將鍊錶1 2 3 和 2 3 5 並為 1 2 3 5,只能輸出結果,不能修改兩個鍊錶的資料。輸入形式 第一行為第乙個鍊錶的各結點值,以空格分隔。第二行為第二個鍊錶的各結點值,以空格分隔。輸出形式 合併好的鍊錶,以非降序排列,值與值之間以空格分隔。樣例輸入 4 7...