c語言單鏈表排序
① c語言如何創建單鏈表
C語言創建單鏈表如下:
#include"stdio.h"
#include"stdlib.h"
#include"malloc.h"
#include "iostream.h"
typedef struct node
{
intdata;
node * next;
}node , * List;
void create(int n)
{
int c;
List s,L;
L=(List)malloc(sizeof(node));
L->next=NULL;
printf("請輸入第1個數據:");
scanf("%d",&c);
L->data=c;
for(int i=2;i<=n;i++)
{
s=(List)malloc(sizeof(node));
printf("請輸入第%d個數據:",i);
scanf("%d",&c);
s->data=c;
s->next=L;
L->next =s;
}
printf("鏈表創建成功!");
}
void main()
{
int n;
printf("請你輸入鏈表的個數:");
scanf("%d",&n);
create(n);
}
② 在數據結構中用c語言怎麼編寫用單鏈表將26個字母排序的程序
#include <stdio.h>
#include <stdlib.h>
//申明鏈表
typedef struct node
{
char num;
struct node *next;
}list;
void Bubble_sort(list *L);//鏈表的冒泡排序
void Dis_list(list *L);//遍歷單鏈表
int main()
{
//建表
list *r,*s,*p;
int n=26;//存儲數據的個數
s=NULL;
for(int i='Z';i>='A';i--)
{
r=(list *)malloc(sizeof(list));
r->num = i;
if(!s){s=r;p=s;}
p->next=r;
p=r;
}
p->next=NULL;
printf("排序前:\t");
Dis_list(s);
//排序
Bubble_sort(s);
printf("排序後:\t");
Dis_list(s);
return 0;
}
void Dis_list(list *L)
{
list *r;
r=L;
while(r!=NULL)
{
printf("%c\t",r->num);
r=r->next;
}
printf("\n");
}
void Bubble_sort(list *L)
{
list *r,*s;
char temp;
for(r=L;r;r=r->next)
{
for(s=r;s;s=s->next)
{
if(r->num>s->num)
{
temp=r->num;
r->num=s->num;
s->num=temp;
}
}
}
}
③ 用C語言實現: (1)用頭插法(或尾插法)建立帶頭結點的單鏈表;
C語言實現鏈表操作,具體包括鏈表的建立和數據的插入、刪除。首先,定義了一個結構體,用於描述鏈表節點,每個節點包含整型數據和指向下一個節點的指針。
程序中使用了一個帶頭結點的單鏈表,通過頭插法實現數據的插入。主函數中循環接受用戶輸入,選擇插入或刪除操作。插入操作時,用戶需先輸入要插入的數據個數,再逐一輸入數據。程序會為每個輸入的數據創建一個新的鏈表節點,並將其插入到鏈表頭部。插入完成後,輸出鏈表當前的數據內容。
刪除操作時,用戶輸入要刪除的值,程序遍歷鏈表,找到匹配節點後,將其從鏈表中移除。刪除操作完成後,輸出鏈表當前的數據內容。如果鏈表中不存在該值,程序會提示用戶。
通過這樣的實現,可以動態地添加或移除鏈表中的元素,滿足了基本的數據操作需求。頭插法使得新插入的元素總是位於鏈表的最前端,方便管理和操作。
需要注意的是,每次操作後都需要更新鏈表的結構,確保鏈表的正確性。在實際應用中,可以根據需求選擇不同的插入或刪除方法,如尾插法,以適應不同的應用場景。
此外,程序中的錯誤處理也較為完善,當用戶輸入非法選項時,程序會提示錯誤並要求重新選擇。這種機制有助於提高程序的健壯性和用戶體驗。
通過上述實現,可以靈活地對鏈表進行管理和操作,適用於多種場景,包括但不限於數據存儲、搜索和排序等。