//writed by caolichen
#include#include//定義單鏈表節點型別
typedef struct lnode
slink;
//初始化線性表,即將表頭結點的表頭指標指向為空(null)
slink * initlink(slink *head)
//建立線性表,輸入n個int型變數
void createlink(slink *head,int n)
printf("請輸入第%d個資料:",(6-n));
scanf("%d",&(tmp->data));
tmp->next = l->next; //尾插法,順序
l->next = tmp;
l = tmp;
//tmp->next = head->next; //頭插法,逆序
//head->next = tmp;
} printf("建立線性表成功!\n");
}//列印線性表,鍊錶的遍歷
void printlink(slink *head)
printf("列印線性表成功!\n");
}//銷毀線性表,即逐一釋放節點
void destorylink(slink *head)
free(tmp);
printf("銷毀鍊錶成功!\n");
}//判斷鍊錶是否為空
void isemptylink(slink *head)
else
//return((head->next) == null); //返回為1,則為空表
}//求線性表的長度
void lengthlink(slink *head)
printf("線性表的長度是%d。\n",count);
}int insertlink(slink *head,int n,int data)
if(head == null)
else
printf("插入結點成功!\n");
return 1;
}//刪除第n個結點,找到第n-1個結點,判斷是否有後繼結點,如果有則直接刪除
int deletelink(slink *head, int n)
if (head == null)
else
else
} printf("刪除結點成功!\n");
return 1; //刪除結點成功
}int main()
自己寫的一些單向鍊錶操作
typedef struct singlist singnnode,psingnnode typedef struct looplist loopnode,ploopnode 單向還需修改哈,搜尋的時候是返回前乙個位置還是當前位置 void csingnlist inestmylist psingn...
單向鍊錶中的一些演算法
1.在乙個單向鍊錶中,尋找鍊錶中間節點。使用兩個指標,快指標每次步進為2,慢指標每次步進為1。當快指標到達鍊錶尾部時,慢指標指向的就是鍊錶的中間。node findmiddlenode node head return p1 2.在單向鍊錶中尋找倒數第n個元素 思路同1,使用兩個指標,它們之間保持n...
鍊錶的一些操作
判斷兩個鍊錶是否有交點 判斷兩個單鏈表是否相交,如果相交,給出相交的第乙個點 假設兩個鍊錶都不存在環 相交的煉表示意圖如下所示。兩個沒有環的鍊錶如果是相交於某一結點,如上圖所示,這個結點後面都是共有的。所以如果兩個鍊錶相交,那麼兩個鍊錶的尾結點的位址也是一樣的。程式實現時分別遍歷兩個單鏈表,直到尾結...