C:数据结构与算法之单链表
单链表相对于顺序表比较难理解,但是比较实用,单链表的插入,删除不需要移动数据元素,只需要一个指针来寻找所需要的元素,还有一个大优点就是不浪费空间,当你想要增加一个结点可以申请(malloc())一个结点的空间,删除一个结点也可以释放(free()),跟顺序表一样的,首先先来定义一个单链表,
typedef struct lnode
{
int data;
struct lnode *next;
}LNode,*LinkList;
typedef是将类型struct lnode改为LNode,还有指向这个类型的指针*LinkList;aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKgAAABMCAIAAAB2/Gt3AAAD7UlEQVR4nO2b25mDIBBGqYuCqMdqaMZi/n0QdYZbjGuUZP7zFJHdz+E43EIciEnc0w9AnmEX74gNKN4oFG8UijcKxRvlhfgrZo4jYiRMCcUDZsKUUDxgJkwJxQNmwpTcKT4GP80A5sm7EJcPS0kMbvmg2OohBteg8mcnoPhU2L99mhhciJtQ5XX5oFEVaoYbxe9D8amwf/sfxLAZX/O/ks8hzpOX14Hir+Y+8drlip9mke97jusrdvWXc5/4hRicD8HvwmIQ+rZBf71iV/8p7hO/ZO06xgtCWFNeJ/w2JISoDGe1roDiU2H/9r+IweXaNpOF3/VVaXf113T2FJ8K+7fPUZUnM32e9hEgBuenWO/qh8n4/aleP5IMLi+/OJhj3JrxKkp1kd4K3QRyve/CVJ0cXtNol4tfuysxeal3TSbES7t5S8RQWlwbZakbiya6rtGuEK/RlvPe7qPd1zHuFJ8os3uxHkLWXmKjx09z2UTPic9Ehqn+JDqA6n8yIl44nyfv1laRY32RDTLvS8bJ+FJtKo3Bee8bz2xAvFqwyzId9zLr36f0W+uOlPHbo+rtiO57KZ+2tUq5ZlfiEPeJH5l/iI+TP/by1V9TAxk/MifC1PP2Rgr7aa6OUbVt6ZuheODU5C4N3nLfYa5V2i6Z8QNyLkwtvpnxCYofkCvEH8341jeQN0PxwH0Z75zLVjEU/yjvhpnvyB7I+MYuDsU/ipEwJRQPmAlTMqb4dT/3Lig+FfZvfx6K/zhfLb5ymuccFJ8K+7c/D8Wf440GGUa8XAkvp230Lsd2LxZFTp90yWoegeJTYf/29eivZ7OTGvMU1vVv9oV9Hme75gue7djE21p+71x/tYtTLLGRCU1GEB/zozedrl657r7g74wDT4p3evtPBeer77G4kzXUd2V8xXJepHdEe+IbNV/wpPhsd6/+E4Ns5y+pL1rup8TvP8RYr1riOzVf8KT47JDOfha1QjHtqZxo+h7xla5edHr6pm4qHWev5gvGFN97+p8Qnx/HU5M7OfClaOvDYLfmC4YTX0mG/A9TV68qfZt4ZKu5qFpk7/aWUy+1wX8/j9mq2WU88cXsfd7P9vUndweXMqOIf5YBxSMb6NXUP58QFkvh71jOPY+RMCUUD5gJU0LxgJkwJRQPmAlTQvGAmTAlFA+YCVNC8YCZMCUUD5gJU0LxgJkwJRQPmAlTQvGAmTAlFA+YCVNC8YCZMCUUD5gJU0LxgJkwJRQPmAlTQvGAmTAlFA+YCVNC8YCZMCUUD5gJU0LxgJkwJRQPmAlTQvGAmTAlFA+YCVNC8YCZMCXviSe/CsUbheKNQvFGoXijLLr/ABKyI0dquBDjAAAAAElFTkSuQmCC" alt="" />,所以当我们创建的每个这样的类型都包含左数据,有指针,创建完单链表,这个表还是空的;先构建单链表并输入数据(逆序输入(表头插入)):
LinkList creatN()
{
LinkList L,s;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
int x;
scanf("%d",&x);
while(x!=-)
{
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
return L;
}
正序插入(表尾插入):
LinkList creatZ()
{
LinkList L,s;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
LinkList p;
p=L;
int y;
scanf("%d",&y);
while(y!=-)
{
s=(LinkList)malloc(sizeof(LNode));
s->data=y;
s->next=NULL;
p->next=s;
p=p->next;
scanf("%d",&y);
}
return L;
}
输出函数:
int print(LinkList L)
{
LinkList p=L->next;
while(p!=NULL)
{
printf("|%d|",p->data);
p=p->next;
}
printf("\n");
printf("请继续使用,请输入0~8的数字:\n");
}
接下来弄一个表格把所有函数都实现:aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAEqCAIAAAAJbcf9AAASgUlEQVR4nO3d0ZKrKrcG0Lz/S+dc/FU5LoHJRLLTKGNcrEoQEVv621OTrv16AzDh9dcTALg3MQowRYwCTLlZjL5eN5swcFP5tLlZKolR4DfEKMCUp8XoK6faU6NGjRpnGl+9PL1HjH50zwfgK/Jpc7NUEqPAb4hRgCmPjVGA1YhRgCliFGCKGAWYIkYBpohRgCk3i1FfeFpfeY2CltOm/p+LhB0yh4akx37hyW/FLRwvU/WStTr8Jkarf+2X/8s/NiFG+RvJbDq2BH/dHA94Gvb0+nI4WmP8jxjlbwS5Vn3d2jczfrU9c6Brh2A3YpS/MRqdZYeyZ7IUjevTeKqZdnYjRvkbQ5H3ef0OY/Q0fmZr8na+uska43/EKH8jWY2Wm6qxG4RymZKtQyRjNJnj7EOM8jcux2jrbbkpU0IG41f3HerPJsQof6NbMx77fN6eRmiNXHY4NmbK2OpsWwdic2KUvzd0Nx1HXrVgTC6GVvXazWs2J0b5e0MxGuxVDc3MrXp19yBAkyOzCTHKrwW382WNeXp9Guc05rE9yN/WsK0DBSeS6cbjiVH+XqYazYTjpz3Izepdf/VYl+fMbsQofy9/3/3uPRvNjFYdv3sLf+o8egge7LExCrAaMQowRYwCTBGjAFPEKMCUm8Woz1KB33jsJ/ViFPgNMQow5Wkxmv9DQ40aNWr8buOr+4ckw5H2p7rnA/AV+bS5WSqJUeA3xCjAlMfGKMBqxCjAFDEKMEWMAkwRowBTxCjAlJvFqC887eNb1/ozTjlgpoVtPfYLT1b5PuJrXf2Lveqf7h3ftl4nD8pWxCj3EydjEI7lOOXb+WHZjRhlLRcuXLcaTW76xGi1QxCyZfvoKXBrYpRVDGVQsmaMe346V2Ox+u9x2OOLVviyAzHKWn5ZjVZ7xtVo+VaMskWMZu7CNP6sMX/hWh0yWgMGk2nNudr/1YvRyZ+SxvUb84v2/3sm+y0if2IsZfTCvYoUa3Wo/gJcPvSnczkBa283YpS1zGRZdYTybStPj6Plqw8xihhlLQMr8t90a5WlF6rRIGHLt2IUMcpaqsVjq1vmEVVQjbaOpRpliBhlFdXYCsLunYiwaiy2OrQGmTwEjydGubFqZpU5e9oavD2O0ErGVozGY/JgYpQbi69ya2u3cgzC9xSXlhnvB8cowGrEKMCUm8Wou619ZK515tll/olq8qBs4rE39Vb5PpLXOkjJsr0buxYYH2KU+6l+kt79vlEyRpPDWmB8iFEWEudgsNfQ1m6MVnsGIVu2D82fuxOjrCLz+PLYIV+KdgvJaixW/y0HicOXHYhRVnE5iTKZm+mfqUbLt2KULWI0cxem8WeNo5ev3JRxYfDWnKtjvnoxOvlT0rh+Y2a5ntdYst8i8ifGaoau3atIseOmjJnjVidg7e1GjLKWmSzLjBBsPY6Wrz7EKGKUhYxmaBxnwSFa1WtrGmKUgBhlFdUkKivBY4fRR1Rx2H2OpRpliBhlFdXYqkbYteeSQY3ZfUgabK0mb3CaPI8Y5caqmRUnb9m5NWwrGVsxGo/Jg4lRbixzFx/3CZ4YVFtOcWmZ8X5wjAKsRowCTLlZjLrb2sdvrvWFhwNs4rE39Zb1ProBF6j2PL0+HiXY95unxK2IUe4nTsZ8wAWfubc+f2991hQfiGcToyykmoOZva5tTcZoNViDPGU3YpRVDOVRshSNe16O0WqGJmfO84hRVnG5rLtcjVZ7Xvj3lMvW3m62iNFqDaLxrxq7Fy7uVo5ZVV0Jp93zw77/jc7qsN15anxYY3D1m6s32W8R+RNjQQPrslcAlr8GmaHif8sjWm87E6OsKHn5qqEWB1yQpxditCxSLLwNiVFWEURhq3+5SxCOqlH+I2KUVVRjtBV81dAMeh7fxk+4qqH5LuK4nGcwB55NjLKQMt2qYVfeWR+3njq/E9FZjhbEaHX30VKaJxGj3Fi1Vq1Wi8et1bfHwH3nYjTzmh2IUW4svsqtrWVxGtSwx/7VMatFLlt5bIwCrEaMAky5WYy6ydpH5lrPP7u89gCBHTz2pt6y3kfyWne/k3R6Blp+Z+D973PVC3PgkcQoy+leu1dPPGzcIflJffwhPlsRoyxn9NqN3m6Pxmg1WIM8ZTdilLUkvzw0VIomb8DzMRoUthbehsQoC7l2d5x5CJDpPxqjn39PIW7t7WaLGK0WLBr/qrF7ybrdMpJrIzns+9/oLAcpx5z8KWlcvzFeUfW1l+y3iPyJsYhXI6Eye1V3KZd+VXWo+N/yiNbbzsQoSyjjbGiv/O7B1gsxGucymxCjrGI0jIJaMt6r1U01yjVilOWcwrEbedUdMyMHY5bjn8rP0yCteGUHYpS1lDlVZmV5Z33cGowctyRjtDrCtYcSPIMY5caqtWqcvGXn44tPz0yMZl6zAzHKjWXu4uM+QY15jNRTvJaHsN529tgYBViNGAWYcrMYdZO1j6EP6N+NG/l3+HX9rx+dJ3nsTb3Fuo/LQZYMODFKTIxyM0HN2Kof83H59Wr09CHV0MjchRhlFRfy5XW4PS93aWXWKdpOo7WOEs8hv9XKfB4xyipGL9kpFoMRjh2CmM7UjEGfal5XDx3MgTsSo6xi6JK1qshWPlbffmWRxNkdHMsSfYwtYrRaBWj8q8bgkuW7DXU4tbyKaCvnWVU91jv8LYoP0dqk8RaN5VXuunGMcguvWtIFnVuqPcsDBb8JA78VIzHa2sTdiVFWlInRbvuxlCj7lI1xARIcLhmj3cTnpsQoq/iPqtHqaHFLGY7dYbuxrhp9MDHKKqqplE/GoL1aeFYPdMriuNgcjVHV6FOJURZS5ksQo9eq0VZElnlX7tsaM+ipGt2BGOX5Wln2ictTCner0QvZKkYfTIxyM0EdWtak3dvnoISsFsXxaGWHMqar8+TWHhujAKsRowBTbhajbpf20b3W5SPRzF7/6dG7PYPHr5mnGfzSY2/qrad9XA6ysj2TTaNBdi1GWz2rk2+dEb8hRrmZbopVgy94Oz+foa2T8xSjCxKjLCSo6Vr9T/+2RjuO+emfP1B35FYsnjYFQXmcXjBscOjLp8Ok/I/9ZpfHerqdaqZk+pcvgp5fj5tgqDL+4g7fPTo/I0ZZwuj1agVQdZxWDRgXgNVCL99zaGJBspeTzxyaX9oiRpO/Dxp/0xhcr263d5g4rQ6nltchvFozCTpUN+WHKhuP/yZH7m792dXcuTF5jf7pmey3iPyJsYLT0uxevnJZV9d3OfK7iK2yf3ca3YNWu5XDdhurc8ifO78hRlnC6H/ekyFYTcz5GG11CN7mY7Q7h8zM+SUxyhIuxGi+IrucRK3RYtXduxPLVKZDk+dnxChLaOVXPhmD9nLwVk6Npnm8yw9idKh25j8iRllFq6AbLQmrncvXr+LWPi5aL0Te5Ri9tpc1/1fEKM8X1J4X6r5k+fkusj45ftAS72XN/xUxys0EdWiZWUGEfTq8w9VyGvMUW+XgyYxr7Rif0dC58zP5n7lrAzBFjAJMuVmMurV5vPISVy96cGf9H02D3Tz2pt7ifrDuQ8NT5+rr7rDBgB5NciRGuatr1ejX885KQ4yyimTGVau/buP70lfr83NQiu5MjLKK18hDzDIZq1nZav/i8rDSEKOs4nPJkhl6fB1E8HHYVvEYVJdBhasm5X+2iNHk74PG3zQOXbvRrdWr333R3bc7jbLngj95jd9tzKyT86pI9ltE/sRYSvLClcu6ur4/PY8jly9aE2hNpntQtiJGWUs+Rrvtp4z7Yoy2Olh1exKjrOWLMXpsSVavmVgMhlKZ7kmMspYyyEazrDtg2Rh3Hp1wdxceRoyylnyMZnY/tcQ37Nf2jR8RsAMxyi1diNF8SsYdgvLTqtuTGOWWMjf1x5Y4doPVchq5Nf5pQLby2BgFWI0YBZhysxh1b/Vso9e39VHVt8ZnZ4+9qfdr8GzHD3yCJ6TBA9Pqk81yfOgSo9xS94P1ZEs3juO0hbcYZR3JzArSbSZGuztCixhlCcl0iztMxqhSlGvEKEv472L0lIaqUb5uixitFhca/6qxe8nibsc+r14mdlta86z68x+dxqUag2XWXLfJfovInxiLaK3RoHPZONpSPdbnN6c7DXiLURaR/897ELVfidFPy3GT5URAjLKE0buk0Rg93p3Fxy3T01oiJkZZQivd8oVntbEsXU8jd0PTQqJLjLKK6rPR+RhN7ni6l3dHT54Y5Zby2Trap/XhlRVFixjlZqofMQWfO5W7T3aAk8fGKMBqxCjAlJvFqFszSkOrovqRV3Uci21zj72pt7IfrPwovxV5+bfxOMEEWi3sQ4xyS6fvJ5XtF9522zNb2ZAYZSH57xUdY/Qr1ejoLp+vl1ZlToHHEKOsolVgJveaf5vsUGalxbY5McoSLn9o061GY/mhMrO16va0RYxWfz00/lVj93qVb0+bjkN9DpTct7Wp1a3cJZ7qcWJ/+EPW+IPG0XX1vnWMsr7Rdfk6pNXxRbxjZtiyz7GlnGf8C8YOxChLmI/RzCBBSzUQy3CsxuUxwS28DYlRljAZo5lUTbZcmI8A3ZwYZRWtKKxeylN52B0n2dJ6VjA6bbYiRllINRO7MXphU7Ul87qc1YXk5WHEKPeTvInuPu6spmH8tvpUtOxz8cS4JzHKzZS3/EE4Do12GvM/3ZcneWyMAqxGjAJMEaMAU8QowBQxCjDlZjHq01LgNx77Sb0YBX5DjAJMeVqM5v9wRaNGjRq/2/jq/mXdcKT9qe75AHxFPm1ulkpiFPgNMQow5bExCrAaMQowRYwCTBGjAFPEKMAUMQow5WYx6gtP31L9SU42JreW3fp/JRL+L5UuzMRCouuxX3iy+r/omGLBX7+VP/PP38xlBk9OINkz6F+dczdG83/59621Zw3fhRilr5WPp5ZTuMQJm9l06tANsnhWcXpmMjFzRt9deJbxLYhRBuSr0UzyJjcFJe3piKdZBSGbieZW49C5lFkfnGb8I2VZYpQr4pT8ZE2ca8Fop3Ey/ctIvTDnzNyGMrS7y+iYLEiMEjmFYMs79xi0dYh4xzKMqrt0MzGeWzJGjz+KuHMwvaG5WcnrE6P0jd6Wlm+DcS7H6LsdW0GH/H8YyqHKZMxHeeuIx6Gq6Wwlr0+M0lf9ba/+2reSrpWV3ZCt7ttKyW4Oto7Vmt67l5X504kX5OUdWYEYpa+aRNWWVnk1H6OnYbvd4slnYrSayEHZmDlEhhi9HTFK31A1eoqkIEa7oRzMJN40n7PXJqka3ZMYpe8TgkGmnFI1U43mE6qbgMHruMNo3RpMMjlgfq/MjqxAjNJ3TMNuNVp9UcZoJjEzOyazr9qhGpGnkwpOPP7vynHA6pl2D906EVYjRukLqqpkjHbHaY0Z5F35Iki3cpd8unVbRjskWcN3IUYZcAq4bjX66XDsnLk01SI0XwYGJWE85mme3QPB+8ExCrAaMQowRYwCTBGjAFPEKMCUm8Woj1OB33jsJ/ViFPgNMQow5WkxGnyhuvXlao0aNWr8SuOr+xduw5H2p7rnA/AV+bS5WSqJUeA3xCjAlMfGKMBqxCjAFDEKMEWMAkwRowBTxCjAFDEKMEWMAkwRowBTxCjAFDEKMEWMAkwRowBTxCjAFDEKMEWMAkwRowBTxCjAFDEKMEWMAkwRowBTxCjAFDEKMEWMAkwRowBTxCjAFDEKMEWMAkwRowBTxCjAFDEKMEWMAkwRowBTxCjAFDEKMEWMAkwRowBTxCjAlNfrVUnSycbk1s600vueegY7lpv+o/kD+3i9D2Hxqvn/ro0M+noSHeeTGaQbo8GA3elJUiBWz8FqyylY44TNbErNr1eWxlM9zbbM/TKCM2bOCHiYfogct1Zft1oym96JoCzn1ppweaxPY+u84t0vnA6wm3oixClZzabqXq3Ryk3dqO3uVY3jauYG44hRYNQ/Idjyzj0GbR2gtWMrHPM9q5kY9DxNppWewc+hHF+qwuYG7mRPqRoUd6cd403x7uXW1hGDDtXcHPrPQ6uDGAUGPql/t+u4VhjFITsao9XgjgN9JuWTEwM2Vy/W/n9zO0ZPxWl395kY7aZ563VZO1cDN39ogJPhavSUO0GMjubmF2O02hjsFf8E4p8JsLl/QjAIvlOCnDLlWoy+G9FWmeU3PmJqHWvo0OVWqQqb+ydAM9Vo9UUZo61wqSZpJomqU8rHaHAsMQrMuP5stOxwrbSc0b3XPk2vFffBlKQkEGve3maq0bKMfedy51vZFFSjp7v46onExWyQzgAfMgJgihgFmCJGAaaIUYApYhRgihgFmCJGAaaIUYApYhRgihgFmCJGAab8HwJaHewiO9zuAAAAAElFTkSuQmCC" alt="" />,
#include "stdio.h"
typedef struct lnode
{
int data;
struct lnode *next;
}LNode,*LinkList;/* */
LinkList creatN();
LinkList creatZ();
void ShowMainWindow();
int print(LinkList L);
int addbiaowei(LinkList L,int x);
int addbiaotou(LinkList L,int x);
int deletbiaowei(LinkList L);
int deletbiaotou(LinkList L);
int findmax(LinkList L);
int findreplace(LinkList L,int i,int x);
main()
{
printf("正序插入请按扣z(否则为逆序插入):");
LinkList L;
char a;
scanf("%c",&a);
if(a=='z')
{
printf("请输入数据并以-1为结尾:\n");
L=creatZ();
}
else
{
printf("请输入数据并以-1为结尾:\n");
L=creatN();
}
system("cls");
ShowMainWindow();
printf("请输入0~8的数字:\n");
while()
{
int num;
scanf("%d",&num);
if(num==)
{
printf("%请输入你想要在表尾增加的数据:\n");
int y;
scanf("%d",&y);
addbiaowei(L,y);
}
else
if(num==)
{
printf("请输入你想要在表头增加的数据:\n");
int y;
scanf("%d",&y);
addbiaotou(L,y);
}
else
if(num==)
{
deletbiaowei(L);
}
else
if(num==)
{
deletbiaotou(L);
}
else
if(num==)
{
int max;
max=findmax(L);
printf("最大值为:%d\n请继续使用,请输入0~8的数字:\n",max);
}
else
if(num==)
{
printf("请输入你要查找的元素,并且返回元素所在的位置!:");
int x;
scanf("%d",&x);
LinkList p=L->next->next;
int j=;
while(p->next!=NULL)
{
if(p->data==x)
printf("此元素在%d个位置\n",j);
j++;
p=p->next;
}
printf("请输入0~8的数字:\n");
} else
if(num==)
{
printf("请输入你要的替换的位置和元素!:\n");
int i,x;
scanf("%d,%d",&i,&x);
findreplace(L,i,x);
} else
if(num==)
{
printf("此表的数据为:");
print(L);
}
else
if(num==)
break;
}
printf("%d",L->next->data);
}
void ShowMainWindow()
{
printf("\n\n\t+-----------------------------------------------------+\n");
printf("\t| 单链表练习 |\n");
printf("\t+-----------------------------------------------------+\n");
printf("\t|------------------- 1.表尾增加-----------------------|\n");
printf("\t|------------------- 2.表头增加-----------------------|\n");
printf("\t|------------------- 3.表尾删除-----------------------|\n");
printf("\t|------------------- 4.表头删除-----------------------|\n");
printf("\t|------------------- 5.查找最大值---------------------|\n");
printf("\t|------------------- 6.查找元素的位置-----------------|\n");
printf("\t|------------------- 7.替换元素-----------------------|\n");
printf("\t|------------------- 8.打印表-------------------------|\n");
printf("\t|------------------- 0.退出系统-----------------------|\n");
printf("\t+-----------------------------------------------------+\n");
printf("\t| 请输入您的选择(0-5) |\n");
printf("\t+-----------------------------------------------------+\n");
printf("\n\n");
}
LinkList creatN()
{
LinkList L,s;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
int x;
scanf("%d",&x);
while(x!=-)
{
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
return L;
}
LinkList creatZ()
{
LinkList L,s;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
LinkList p;
p=L;
int y;
scanf("%d",&y);
while(y!=-)
{
s=(LinkList)malloc(sizeof(LNode));
s->data=y;
s->next=NULL;
p->next=s;
p=p->next;
scanf("%d",&y);
}
return L;
}
int addbiaowei(LinkList L,int x)
{
LinkList p=L;
LinkList s;
while(p->next!=NULL)
{
p=p->next;
}
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
p->next=s;
s->next=NULL;
printf("在表尾添加成功,查看请按8!\n");
}
int addbiaotou(LinkList L,int x)
{
LinkList s;
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
printf("在表头添加成功,查看请按8!\n");
}
int deletbiaowei(LinkList L)
{
LinkList p=L;
LinkList s;
while(p->next->next!=NULL)
{
p=p->next;
}
p->next=NULL;
free(p->next);
printf("表尾删除成功,查看请按8!\n");
}
int deletbiaotou(LinkList L)
{
LinkList p=L->next;
L->next=p->next;
p->next=NULL;
free(p->next);
printf("表头删除成功,查看请按8!\n");
}
int findmax(LinkList L)
{
int max;
LinkList p=L->next;
max=p->data;
while(p->next!=NULL)
{
p=p->next;
if(max<p->data)
max=p->data;
}
return max;
}
int print(LinkList L)
{
LinkList p=L->next;
while(p!=NULL)
{
printf("|%d|",p->data);
p=p->next;
}
printf("\n");
printf("请继续使用,请输入0~8的数字:\n");
}
int findreplace(LinkList L,int i,int x)
{
LinkList p=L->next;
int j=;
while(p->next!=NULL&&j<i-)
{
j++;
p=p->next;
}
p->data=x;
printf("替换成功,查看请按8!:\n");
}
这就是一个完整的单链表,函数功能可以自己复制运行试一试。
C:数据结构与算法之单链表的更多相关文章
- 【数据结构与算法】单链表操作(C++)
#include <stdio.h> #include <malloc.h> /*单链表节点定义*/ typedef struct LNode { int data; //da ...
- python数据结构与算法之单链表
表的抽象数据类型 ADT list: #一个表的抽象数据类型 List(self) #表的构造操作,创建一个空表 is_empty ...
- 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入
什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...
- 数据结构之 线性表---单链表的操作B(先逆序+再删除重复元素)
数据结构上机测试2-2:单链表操作B Time Limit: 1000MS Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删 ...
- 数据结构之 线性表---单链表操作A (删除链表中的指定元素)
数据结构上机测试2-1:单链表操作A Time Limit: 1000MS Memory limit: 4096K 题目描述 输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据 ...
- java数据结构和算法04(链表)
前面我们看了数组,栈和队列,大概就会这些数据结构有了一些基本的认识,首先回顾一下之前的东西: 在数组中,其实是分为有序数组和无序数组,我简单实现了无序数组,为什么呢?因为有序数组的实现就是将无序数组进 ...
- 《数据结构》2.3单链表(single linked list)
//单链表节点的定义 typedef struct node { datatype data; struct node *next; }LNode,*LinkList; //LNode是节点类型,Li ...
- Java数据结构-线性表之单链表LinkedList
线性表的链式存储结构,也称之为链式表,链表:链表的存储单元能够连续也能够不连续. 链表中的节点包括数据域和指针域.数据域为存储数据元素信息的域,指针域为存储直接后继位置(一般称为指针)的域. 注意一个 ...
- iOS常用算法之单链表查找倒数第n个节点(图解)
拿到题目, 首先要先了解链表数据结构, 如下图: 常规思路: 利用数组, 遍历整个单链表, 将每个节点装入数组中, 最终拿到数组根据索引(数组长度-1-n)就得到了倒数第n个元素, 这里要注意从数组中 ...
随机推荐
- (五)solr7.1.0之solrJ的使用
(五)solr7.1.0之solrJ的使用 下面是solr7的官网API介绍: 网页翻译的不是很准确,只能了解个大概,基本能获取如下信息: 一.构建和运行SolrJ应用程序 对于用Maven构建的项目 ...
- NullSafe基于Runtime的深度解析
Objective-C是一门动态语言,一个函数是由一个selector(SEL),和一个implement(IML)组成的. 执行一个方法时如果系统找不到方法会给几次机会寻找方法,实在没有此方法就会抛 ...
- 个人笔记之json实现模糊查询
1:首先创建一个项目如:(说明:此项目是在eclipse创建的) 2.在创建相对应的包如: 3.创建写好相对应的配置文件如: applicationContext.xml具体内容如下: <?xm ...
- cmd markdown 使用教程
cmd markdown 使用教程 tags: 自制教程 李卓伦 目录: [TOC] 一.简介与安装 我们理解您需要更便捷更高效的工具记录思想,整理笔记.知识,并将其中承载的价值传播给他人,Cmd M ...
- MVC Code First(数据模型实例讲解)
首先配置好web.config <connectionStrings> <add name="BookDbContext" connectionString=&q ...
- 浅谈IM(InstantMessaging) 即时通讯/实时传讯【理论篇】
一.IM简要概述 IM InstantMessaging(即时通讯,实时传讯)的缩写是IM,互动百科大致解释是一种可以让使用者在网络上建立某种私人聊天(chatroom)的实时通讯服务. 大部 ...
- MySql的技术规范-企业版(来源于MySql官网)
MySQL技术规范 Oracle MySQL云服务 MySQL数据库即服务 灵活的架构 开源 多线程 可插拔的存储引擎架构 InnoDB,NDB集群 MyISAM,合并,内存,存档 ANSI SQL标 ...
- Lonlife 1000 - Spoon Devil's 3-D Matrix
1000 - Spoon Devil's 3-D Matrix Time Limit:1s Memory Limit:32MByte Submissions:208Solved:65 DESCRIPT ...
- Linux压力测试软件Stress安装及使用指南
一.Stress是什么 stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户. 二.安装 将stress的安装包上传并解压到linux服务 ...
- centos7 忘记mysql root密码办法
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和 ...