#include //2-1儲存結構
typedef struct lnode
lnode,*linklist;
//2-2建立乙個長度為n的鍊錶、前插法
void creatlist_h(linklist &l,int n) //前插法建立單鏈表
}//2-2建立乙個長度為n的鍊錶、尾插法
void creatlist_r(linklist &l,int n) //後插法建立單鏈表
}//2-3在鍊錶的第i個位置插入乙個元素
void listinsert(linklist &l,int i,int e) //在i位置插入e
if(!p || j>i-1) return;
s=new lnode;
s->data =e;
s->next=p->next;
p->next=s;
}//2-4刪除鍊錶的第j個位置的元素
void listdelete(linklist &l,int i) //刪除i位置結點
if(!(p->next) || (j>i-1)) return;
q=p->next;
p->next=q->next;
delete q;
}//2-5獲取鍊錶中第k個位置的資料元素的值
int getelem(linklist &l,int i) //獲取鍊錶中第i個元素的值
if(!p || j>i) return -1;
return p->data;
}//2-6查詢鍊錶中第1個與e相等的元素,若查詢成功,則返回該元素在表中的位置序號,若查詢失敗,則返回0。
int locateelem(linklist l,int e)
if(p==null)
return 0;
else
return j;
}//主函式
int main()
printf("請依次輸入%d個元素(逆序):",n);//前插法
creatlist_h(l,n);
//printf("請依次輸入%d個元素:\n",n);//後插法
//creatlist_r(l,n);
printf("鍊錶中的原始資料為:");
p=l->next;
while (p!=null)
printf("\n");
printf("請輸入在鍊錶中插入資料的位置i:");
scanf("%d",&i);
printf("請輸入要插入的資料:");
scanf("%d",&e);
listinsert(l,i,e);
printf("在鍊錶的第%d個位置插入%d後的結果:",i,e);
p=l->next;
while (p!=null)
printf("\n");
printf("請輸入在鍊錶中刪除資料的位置j:");
scanf("%d",&j);
listdelete(l,j);
printf("刪除鍊錶的第%d個元素後的結果:",j);
p=l->next;
while (p!=null)
printf("\n");
printf("請輸入在鍊錶中獲取資料的位置k:");
scanf("%d",&k);
i=getelem(l,k);
if(i==-1)
printf("取值失敗。\n");
else
printf("鍊錶的第%d個元素是%d。\n",k,i);
printf("請輸入在鍊錶中查詢的資料e:");
scanf("%d",&e);
i=locateelem(l,e);
if(i==0)
printf("查詢失敗。\n");
else
printf("查詢成功,元素%d在鍊錶的第%d個位置。\n",e,i);
資料結構實驗 順序表的基本操作
include 1 1儲存結構 define maxsize 100 typedef struct sqlist 1 2初始化順序表並放入n個資料 void initlist sqlist l 1 3初始化順序表並放入n個資料 void listinsert sqlist l,int i,int e...
資料結構 順序表 鍊錶 基本操作
ifndef slist h define slist h include include include typedef int sltdatatype typedef struct slistnode slistnode typedef struct slist slist void slist...
c資料結構 鍊錶基本操作
鍊錶是一種線性結構,和順序表相比,鍊錶能充分利用磁碟上的空間,在對鍊錶進行插入刪除操作時,時間複雜度為o 1 相對於順序表,插入刪除時間複雜度為o n 但鍊錶需要額外的儲存指標的空間,且鍊錶不能隨機訪問。所以使用鍊錶還是使用順序表需要根據具體的使用場景。當多為查詢操作時使用順序表比較好,當刪除增加操...