帶頭結點的單鏈表。
單鏈表由頭指標唯一確定。
head起指向作用,資料域沒有意義。
/*
* 指標涉及到頭、尾、臨時節點
* 頭插法:臨時節點放在頭部
* 尾插法:臨時節點放在末尾
*/#include#include//定義資料型別別名
typedef int datatype;
//定義節點的結構體和別名
typedef struct linknodenode, *linklist;
//建立表,頭插法迴圈輸入
linklist creat_linklist(linklist head)
else
break;
} return head;
} //建立表,尾插法迴圈輸入
linklist creat_linklist_tail(linklist head)
else
} tail->next=null;
return head;
} //表長
int lengthlist(linklist head)
return n;
}//查詢1-查詢第i個元素並返回位址,沒有找到就返回null
linklist searchlist1(linklist head,int i)
if(j==i)
return p;
else
return null;
} //查詢2-查詢第一次值為x的位址,否則返回null
linklist searchlist2(linklist head,datatype x)
if(p->data==x)
else
} //插入-在第i位插入乙個元素x
int inslist(linklist head,int i,datatype x)
if(!p||j>i)
return 0;//插入失敗-i超出範圍
node *s=new node;
s->data=x;
s->next=p->next;
p->next=s;
return 1;//插入成功
} //刪除第i個元素
int dellist(linklist head,int i)
if(!(p->next)||j>i-1)
else
} //方法2,顯式返回指標
node* create_linklist2()
//對應第二種的頭插法
int insert_linklist2(node* lq,datatype x)
//列印輸出單鏈表
void showlist_linklist(linklist head)
}void test1()
printf("要查詢的值:");
scanf("%d",&i);
p=searchlist2(head,i);
if(p)
else
printf("要刪除的值的位置:");
scanf("%d",&i);
i=dellist(head,i);
if(i==1)
else
printf("表長:%d\n你輸入的資料是:\n",lengthlist(head));
showlist_linklist(head);
printf("\n在第i位插入x:");
scanf("%d %d",&i,&x);
i=inslist(head,i,x);
if(i==1)else
printf("表長:%d\n你輸入的資料是:\n",lengthlist(head));
showlist_linklist(head);
}void test2()
else }}
int main()
C 資料結構 單鏈表
c 實現 首先,構造乙個單鏈表的節點類 class link 然後是以這個節點類為基礎,建立單鏈錶類 這裡簡單實現了單鏈表的兩個功能新增和輸出 class linklist if head.next null else if head.next null 列印全部資料 public void pri...
c 資料結構單鏈表
鍊錶定義 typedef struct linklistlinklist,linknode linklist 表示頭結點,linknode 表示節點linklist head linknode node 鍊錶初始化 bool linkinit linklist l l next null l dat...
C 資料結構 單鏈表
單鏈表的實現 include using namespace std template typename t struct node template typename t class linklist template typename t linklist linklist template t...