單連結串列的建立:頭插法
#include <stdio.h>
#include <malloc.h>
#include <stdbool.h>
typedef int ElemType;
/*定義一個單連結串列*/
typedef struct LNode{
ElemType data;
/*下一個元素的地址指標*/
struct LNode *next;
} LNode,*LinkList;
/**
*單連結串列的建立
* @return
*/
LinkList CreateListByHead(LinkList L){
/*中間指標 */
LNode *s;
/*存入的元素*/
int x;
/*建立頭節點:申請空間*/
L=(LinkList) malloc(sizeof (LNode));
/*對頭結點進行初始化:*/
L->next=NULL;
/*讀取傳入的元素*/
scanf("&d",&x);
while (x !=999){
/*建立新的節點*/
s = (LinkList) malloc(sizeof(LNode));
s->data=x;
/*中間指標儲存的地址為:頭指標的地址*/
s->next = L->next;
/*重新設定 頭結點儲存的指標:為插入元素的地址*/
L->next=s;
scanf("%d",&x);
}
/*返回頭節點*/
return L;
}
int main()
{
LinkList L;
CreateListByHead(L);
return 0;
}
單連結串列的建立:尾插法
#include <stdio.h>
#include <malloc.h>
#include <stdbool.h>
typedef int ElemType;
/*定義一個單連結串列*/
typedef struct LNode{
ElemType data;
/*下一個元素的地址指標*/
struct LNode *next;
} LNode,*LinkList;
/**
*單連結串列的建立: 使用尾插法
* @return
*/
LinkList CreateListByTail(LinkList L){
/*中間指標 */
LNode *s;
/*存入的元素*/
int x;
/*建立頭結點:申請空間*/
L=(LinkList) malloc(sizeof (LNode));
L->next=NULL;
//初始化尾結點:只有一個頭結點=尾節點
LNode *r=L;
/*讀取傳入的元素*/
scanf("&d",&x);
while (x !=999){
/*建立新的節點*/
s = (LinkList) malloc(sizeof(LNode));
s->data=x;
/*更新當前r指標上的元素 儲存的下一個地址指標*/
r->next=s;
/*更新尾節點的元素地址:為新插入的元素地址*/
r=s;
scanf("%d",&x);
}
/*插入完成:尾巴置空*/
r->next=NULL;
/*返回頭結點*/
return L;
}
int main()
{
LinkList L;
CreateListByTail(L);
return 0;
}