分享
 
 
 

单链表的创建、插入、删除、倒置操作

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

/*-----------------------------------------------------*/

/*--------------单链表的创建、插入、删除、倒置操作-----------*/

/*--------------Written by redfire250-----2005.5.10----*/

/*-----------------------------------------------------*/

#include<malloc.h>

#include<stdio.h>

#define null 0

struct student

{

long Number;

char Name[20];

long Score;

struct student *Next;

};

int n=0;/*n为全局变量,用来计算链表的结点个数*/

/*-----------------------------------------*/

/*--------------创建结点函数Creat()--------*/

/*-----------------------------------------*/

struct student *Creat()

{

struct student *p1;

struct student *p2;

struct student *head=null;

p1=p2=(struct student *)malloc(sizeof(struct student));/*开辟一段可用内存单元*/

printf("please input the student's Number Name and the Score:\n");

scanf("%ld%s%ld",&p2->Number,p2->Name,&p2->Score);

while(p2->Number!=0)

{

n++;

if(n==1) /*是否开辟的是第一个结点*/

head=p2;

else

p1->Next=p2;

p1=p2;

p2=(struct student *)malloc(sizeof(struct student));

printf("Input the Number the Name and the Score:\n");

scanf("%ld%s%ld",&p2->Number,p2->Name,&p2->Score);

}

p1->Next=null;

return(head);

}

/*------------------------------------------*/

/*--------------查看链表内容函数View()------*/

/*------------------------------------------*/

View(struct student *head)

{

struct student *p;

p=head;

while(p->Next!=null)

{

printf("%ld %s %ld\n",p->Number,p->Name,p->Score);

p=p->Next;

}

printf("%ld %s %ld\n",p->Number,p->Name,p->Score);

}

/*-------------------------------------------------*/

/*--------------插入结点函数(前插)Insert()-------*/

/*-------------------------------------------------*/

Insert(struct student *head,int Num) /*head为链表头指针,Num插入链表位置*/

{

int t=1;

struct student *p1,*p2;

p1=head;

if (Num>n||Num<0)

{

printf("input error!!!\n");

return 0;

}

while(t<Num-1) /*找到要插入结点的前一个结点*/

{

p1=p1->Next;

t++;

}

p2=(struct student *)malloc(sizeof(struct student));

printf("Input the Number the Name and the Score:\n");

scanf("%ld%s%ld",&p2->Number,p2->Name,&p2->Score);

p2->Next=p1->Next;

p1->Next=p2;

n++;

}

/*------------------------------------------*/

/*------------ 删除结点函数Delnode()--------*/

/*-----------------------------------------*/

Delnode(struct student *head,int node)

{

int t=1;

struct student *p1,*p2;

p2=head;

if (node>n||node<1)

{

printf("error!!! The node is not exist!");

return 0;

}

while(t<node-1) /*找到要删除结点的前一个结点*/

{

p2=p2->Next;

t++;

}

p1=p2->Next->Next; /*找到要删除结点的后一个结点*/

free(p2->Next); /*释放要删除的结点空间(删除)*/

p2->Next=p1; /*前一结点指向后一结点*/

n--;

}

/*-------------------------------------------------*/

/*--------------逆序重组链表Invert()-------*/

/*-------------------------------------------------*/

struct student *Invert(struct student *head)

{

struct student *p1,*p2;

p1=head;

p2=p1->Next;

head=p2->Next;

p1->Next=null;

while(head->Next!=null)

{

p2->Next=p1;

p1=p2;

p2=head;

head=head->Next;

}

head->Next=p2;

p2->Next=p1;

return head;

}

main()

{

int number1,number2;

struct student *head;

head=Creat();

View(head);

printf("the n that you want to insert:\n");

scanf("%d",&number1);

Insert(head,number1);

View(head);

printf("the node that you want to DELETE:\n");

scanf("%d",&number2);

Delnode(head,number2);

View(head);

printf("Inverte the list:\n");

View(Invert(head));

getch();

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有