要求:
可以对数据进行增删改查
可以进行排序
最好可以标记出每一块代码的意思
åèä¸ä¸å§ï¼
#include<stdlib.h>
#include<stdio.h>
typedef struct LNode{
int num;
struct LNode *next;
}LNode,*linklist;
void Insertlist(linklist &L,int e) /*L为已ç¥æåºéå¢é¾è¡¨,å¨Lçéå½ä½ç½®æå ¥p,使å¾Lä¿ææåºæ§*/
{
linklist p1,q,p2;
p1=(linklist)malloc(sizeof(LNode));
p1->num=e;
if(L->next) /*å¤æé¾è¡¨Læ¯å¦ä¸ºç©ºé¾è¡¨*/
{
q=L->next;/*å°L第ä¸ä¸ªå ç´ å°åç»q*/
p2=L;
while(q->next&&q->num<p1->num)/*è¥qä¸æ¯æåä¸ä¸ªèç¹,ä¸qçå¼å°äºpçå¼åqå移ä¸ä½*/
{ p2=q;
q=q->next;
}
if(q->num>=p1->num) /*æ¥æ¾æå ¥ä½ç½®*/
{ p1->next=q;
p2->next=p1;
}
else
{ q->next=p1;
p1->next=NULL;
} /*æå ¥èç¹*/
}
else
{ L->next=p1;
p1->next=NULL;
}
}
void createlist(linklist &L)/*å建带头ç»ç¹çæåºé¾è¡¨*/
{ int i,m,k;
L=(linklist)malloc(sizeof(LNode));
L->next=NULL;
printf("请è¾å ¥é¾è¡¨çé¿åº¦:");
scanf("%d",&m);
printf("请è¾å ¥æ°æ®: "); /*建ç«ä¸ä¸ªå¸¦å¤´èç¹åé¾è¡¨*/
for(i=0;i<m;i++)
{ scanf("%d",&k); /*è¾å ¥æ°æ®*/
Insertlist(L,k); /*è°ç¨æå ¥å½æ°,å°æ°çæçèç¹æå ¥é¾è¡¨ä¸*/
}
printf("\n");
}
void turnback(linklist &L) /*é¾è¡¨çéç½®*/
{
linklist p,q;
p=L->next; /*pæå第ä¸ä¸ªå ç´ */
L->next=NULL;
while(p)
{
q=p->next;
p->next=L->next;
L->next=p;
p=q;
}
}
void mergelist(linklist &L1,linklist L2) /*å并L1ï¼L2两个é¾è¡¨,ç¨çå°åL1ä½ä¸ºæ°é¾è¡¨å°åè¿å*/
{ linklist p1,p2,p3,p4;
p1=L1->next;
p2=L2->next;
p3=L1;
while(p1&&p2)
{ if(p1->num<=p2->num) /*è¥p1çå¼å°äºæçäºp2çå¼,åå¸p1\p3åæ¶å移*/
{ p3=p1;
p1=p1->next;
}
else /*è¥p1çå¼å¤§äºp2çå¼,åp1åæå ¥p2,p2åp3å移*/
{ p4=p2->next;
p2->next=p1;
p3->next=p2;
p3=p2;
p2=p4;
}
}
p3->next=p1?p1:p2; /*æå ¥å©ä½æ®µ*/
free(L2); /*éæ¾L2ç头èç¹*/
}
void printlist(linklist L) /*æå°å·²ç¥é¾è¡¨*/
{ linklist p;
p=L->next;
while(p)
{ printf("%5d",p->num); /*è¾åºæ°æ®*/
p=p->next;
}
printf("\n");
}
void main(){
linklist L1,L2;
printf("å建æåºé¾è¡¨L1\n");
createlist(L1);
printf("åé¾è¡¨L1为:");
printlist(L1);
printf("å建æåºé¾è¡¨L2:\n");
createlist(L2);
printf("L2é¾è¡¨ä¸º:");
printlist(L2);
mergelist(L1,L2); //è°ç¨å并两个é¾è¡¨çå½æ°
printf("å并两个åé¾è¡¨åæ°çé¾è¡¨ä¸º:\nnum score\n");
printlist(L1);
printf("éåæåº:");
turnback(L1);
printlist(L1);
}追é®
#include<stdlib.h>
#include<stdio.h>
typedef struct LNode{
int num;
struct LNode *next;
}LNode,*linklist;
void Insertlist(linklist &L,int e) /*L为已ç¥æåºéå¢é¾è¡¨,å¨Lçéå½ä½ç½®æå ¥p,使å¾Lä¿ææåºæ§*/
{
linklist p1,q,p2;
p1=(linklist)malloc(sizeof(LNode));
p1->num=e;
if(L->next) /*å¤æé¾è¡¨Læ¯å¦ä¸ºç©ºé¾è¡¨*/
{
q=L->next;/*å°L第ä¸ä¸ªå ç´ å°åç»q*/
p2=L;
while(q->next&&q->num<p1->num)/*è¥qä¸æ¯æåä¸ä¸ªèç¹,ä¸qçå¼å°äºpçå¼åqå移ä¸ä½*/
{ p2=q;
q=q->next;
}
if(q->num>=p1->num) /*æ¥æ¾æå ¥ä½ç½®*/
{ p1->next=q;
p2->next=p1;
}
else
{ q->next=p1;
p1->next=NULL;
} /*æå ¥èç¹*/
}
else
{ L->next=p1;
p1->next=NULL;
}
}
void createlist(linklist &L)/*å建带头ç»ç¹çæåºé¾è¡¨*/
{ int i,m,k;
L=(linklist)malloc(sizeof(LNode));
L->next=NULL;
printf("请è¾å ¥é¾è¡¨çé¿åº¦:");
scanf("%d",&m);
printf("请è¾å ¥æ°æ®: "); /*建ç«ä¸ä¸ªå¸¦å¤´èç¹åé¾è¡¨*/
for(i=0;i<m;i++)
{ scanf("%d",&k); /*è¾å ¥æ°æ®*/
Insertlist(L,k); /*è°ç¨æå ¥å½æ°,å°æ°çæçèç¹æå ¥é¾è¡¨ä¸*/
}
printf("\n");
}
void turnback(linklist &L) /*é¾è¡¨çéç½®*/
{
linklist p,q;
p=L->next; /*pæå第ä¸ä¸ªå ç´ */
L->next=NULL;
while(p)
{
q=p->next;
p->next=L->next;
L->next=p;
p=q;
}
}
void mergelist(linklist &L1,linklist L2) /*å并L1ï¼L2两个é¾è¡¨,ç¨çå°åL1ä½ä¸ºæ°é¾è¡¨å°åè¿å*/
{ linklist p1,p2,p3,p4;
p1=L1->next;
p2=L2->next;
p3=L1;
while(p1&&p2)
{ if(p1->num<=p2->num) /*è¥p1çå¼å°äºæçäºp2çå¼,åå¸p1\p3åæ¶å移*/
{ p3=p1;
p1=p1->next;
}
else /*è¥p1çå¼å¤§äºp2çå¼,åp1åæå ¥p2,p2åp3å移*/
{ p4=p2->next;
p2->next=p1;
p3->next=p2;
p3=p2;
p2=p4;
}
}
p3->next=p1?p1:p2; /*æå ¥å©ä½æ®µ*/
free(L2); /*éæ¾L2ç头èç¹*/
}
void printlist(linklist L) /*æå°å·²ç¥é¾è¡¨*/
{ linklist p;
p=L->next;
while(p)
{ printf("%5d",p->num); /*è¾åºæ°æ®*/
p=p->next;
}
printf("\n");
}
void main(){
linklist L1,L2;
printf("å建æåºé¾è¡¨L1\n");
createlist(L1);
printf("åé¾è¡¨L1为:");
printlist(L1);
printf("å建æåºé¾è¡¨L2:\n");
createlist(L2);
printf("L2é¾è¡¨ä¸º:");
printlist(L2);
mergelist(L1,L2); //è°ç¨å并两个é¾è¡¨çå½æ°
printf("å并两个åé¾è¡¨åæ°çé¾è¡¨ä¸º:\nnum score\n");
printlist(L1);
printf("éåæåº:");
turnback(L1);
printlist(L1);
}追é®
é¢Â·Â·Â·Â·Â·Â·Â·æ¯å建管çç³»ç»é¢
追çæéäºï¼ä¸å¥½ææ!
温馨提示:答案为网友推荐,仅供参考