重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
數據結構 如果只建立線性表 那是不能使表保持順序的 只有鏈表才能 所以我用了鏈表
成都創新互聯公司專注于萊州網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供萊州營銷型網站建設,萊州網站制作、萊州網頁設計、萊州網站官網定制、重慶小程序開發公司服務,打造萊州網絡公司原創品牌,更為您提供萊州網站排名全網營銷落地服務。
還有就是自己多看看書 自己多想想代碼
#include stdio.h
#include stdlib.h
typedef int elemtype;
typedef struct xianxing
{
struct xianxing *next;
elemtype number;
}ST;
ST *Init_SequenList()//實現初始化一個線性表的函數
{
ST *L;
L = (ST *)malloc(sizeof(ST));
L-next = NULL;
return L;
}
ST * add_head(ST *head)//實現往鏈表內添加數字函數 按照升順序的
{
ST *q ,*p;
p = head;
q = (ST *)malloc(sizeof(ST));
printf("請輸入你要添加的數:");
scanf("%d",q-number);
if(p-next == NULL)
{
q-next = p-next;
p-next = q;
}
else
{
while(p-next-number q-number)//比較大小 找到插入的位置
{
p = p-next;
}
q-next = p-next;
p-next = q;
}
return head;
}
void show_head(ST *head)//顯示鏈表
{
ST *p;
p = head;
while(p-next)
{
printf("%d\n",p-next-number);
p = p-next;
}
}
void main()
{
ST *head;
int n ;//n個元素
printf("請輸入你要創建幾個元素:");
scanf("%d",n);
head = Init_SequenList();//初始化一個線性表
while(n)
{
head = add_head(head);//往線性表里添加數
n--;
}
show_head(head);//顯示鏈表
}
建立方法很多,線性表是順序表的順序存儲結構,這里我給你寫個簡單的例子參考一下,只要理解了,怎么寫都不會錯:具體代碼如下: #include typedef struct{ int data[100]; int length; }Seqlist;//定義Seq這個新的數據類型 void creat(Seqlist L);//建立線性表 void show(Seqlist L);//顯示線性表 int main() { Seqlist L; L.length=0;//初始化線性表的長度為0 creat(L); show(L); return 0; } void creat(Seqlist L) { int a; printf("請輸入要創建的元素的個數:\t"); scanf("%d",a); for(int i=0;i
這是數據結構中標準的線性表插入程序,但是它不是真正的c語言,而是類c哦。
status Insertlist(Sqlist L,int i,Elemtype e){
Elemtype *p; //在這里定義了一個*p的指針,目的是找到鏈表中每個結點的首地址就可以了,不用找一個結點的所用地址啊
int j;
if(L.length==L.listsize) //L.listsize是代表的表的上限值,是事先設定好的
printf("內存分配空間已不夠,請重新分配:\n");
p=L.elem;//這條語句應該寫在下一條語句的后面,也就是分配后的地址給到臨時指針變量p中
L.elem=(Elemtype *)realloc(p,(LISTSIZE+L.listsize)*sizeof(Elemtype));
//這條語句是想一下子分配足夠大的線性表空間,realloc在C中不認可的,實現時還要用malloc,這里只是設計實現的,而分配成功后L.elem只是得到分配單元的首地址,不成功則是空值。
if(!p){
printf("分配空間失敗");
exit(0);
}
L.elem=p;//這條語句應該沒用吧
L.length++;//這條語句應該放在成功插入的后面,也就是return 1;語句之前才對
L.listsize=L.listsize+LISTSIZE_INCE;
if(i1||iL.length){ //這里用到的是運算符||,代表是“或”,也就是說i1代表輸入時誤操作造成,而iL.length代表輸入的位置超出表中數據的個數,位置找不到。
printf("插入位置輸入不正確,請重新操作:\n");
return 0;//代表插入失敗
}
else{
for(j=L.length-1;j=i;j--)//從i到最后表尾順次下移,騰出i的位置
L.elem[j+1]=L.elem[j];
L.elem[i]=e;//將數據插入到i的位置中
return 1;//代表插入成功
}
return 1;
}