网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月07日漏签0天
c语言吧 关注:801,482贴子:4,373,060
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 0回复贴,共1页
<<返回c语言吧
>0< 加载中...

双向链表头都秃了也没找注释的函数出错在哪

  • 只看楼主
  • 收藏

  • 回复
  • 腾王雪
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int num;
float prize;
}Elemtype;
typedef struct nodelist{
Elemtype data;
struct nodelist *font;
struct nodelist *next;
}List,*Nlist;
Nlist Initlist(){
Nlist headnode=(Nlist)malloc(sizeof(List));
headnode->font=NULL;
headnode->next=NULL;
return headnode;
}
Nlist Createnode(int num,float prz){
Nlist new=Initlist();
new->data.num=num;
new->data.prize=prz;
return new;
}
int Lengthlist(Nlist L){
int i=0;
Nlist p=L->next;
while(p){
i++;
p=p->next;
}
return i;
}
void Printlist(Nlist L){
Nlist p=L->next;
int i=0;
while(p){
i++;
printf("\t%d-%f\t",p->data.num,p->data.prize);
p=p->next;
}
printf(" %dnodes has printed\n",i);
}
void Destroylist(Nlist L){
Nlist p=L;
while(L){
p=L;
L=L->next;
free(p);
}
}
void Clearlist(Nlist L){
Nlist p=L->next;
while(p){
p=p->next;
free(p->font);
}
L->next=NULL;
}
Nlist GetElembyi(Nlist L,int i){
Nlist p=L->next;
int j=1;
while(p&&j<i){
p=p->next;
j++;
} // j p同步走所以j=1 p=L->next<=>j=0 p=L
if(!p||j>i) return NULL;
return p;
}
Nlist GetElembynum(Nlist L,int num){
Nlist p=L->next;
while(p){
if(p->data.num==num)
return p;
p=p->next;
}
printf("Didn't found it\n");
return NULL;
}
int Insertnodebyi(Nlist L,int i,int num,float prz){
Nlist p=L; //p=L,是因为可以在头结点之后插入,所以要从头结点开始出发
int j=0;
Nlist e=Createnode(num,prz);
while(p&&j<i){
p=p->next;
j++;
}
if(!p||j>i) return -1;
p->font->next=e;
e->font=p->font;
e->next=p;
p->font=e;
return 0;
}
int Deletenodebyi(Nlist L,int i){//如果p->next=null,则p->next->font不存在!!!
Nlist p=L;
Nlist q;
int j=0;
while(p&&j<i){
p=p->next;
j++;
}
if(!p||j>i) {
printf("Didn't Fount it");
return -1;
}
q=p->font;
q->next=p->next;
while(p->next) p->next->font=q;
free(p);printf("Done\n");
return 0;
}
void Toucha(Nlist L,int num,float prz){
Nlist e=Createnode(num,prz);
e->font=L; //注意!!!想清楚不要乱
e->next=L->next;
L->next=e;
}
void Weicha(Nlist L,int num,float prz){
Nlist e=Createnode(num,prz);
while(L->next) //尾插不能用p=lnext因为空指针lnextnext不存在!
L=L->next;
e->font=L;
L->next=e;
}
int main(){
Nlist L=Initlist();
Toucha(L,1,1.1);
Toucha(L,11,11.1);
Weicha(L,9,9.9);
Weicha(L,99,99.9);
Printlist(L);
//~ Insertnodebyi(L,4,62,62.6);
//~ Insertnodebyi(L,3,662,2.6);
//~ Printlist(L);
int a=Lengthlist(L);
printf("%dnode\n",a);
//~ Deletenodebyi(L,2);
Printlist(L);
int b=Lengthlist(L);
printf("%dnode\n",b);
Nlist geti=GetElembyi(L,4);
printf("%d\n",geti->data.num);
Nlist getnum=GetElembynum(L,9);
printf("%f\n",getnum->data.prize);
int fL=sizeof(L);
printf("L=%d\n", fL);
//~Clearlist(L);
printf("length%d\n",Lengthlist(L));
return 0;
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 0回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示