xch1111 2020-02-04 20:39 采纳率: 100%
浏览 961
已采纳

请问如何才能打印出单链表中的元素的值?

#include
#include
#include

typedef struct LNode{
int data;
struct LNode *next;//一个指向LNode类型结构的指针变量 (指针域)
}LNode,*LinkList;

//单链表初始化
int InitList_L(LinkList &L){
L = (LinkList)malloc( sizeof(LNode) );
L->next = NULL; //先建一个带头节点的单链表
printf("单链表初始化成功!\n");

return 0;

}

//头插法创建链表
int CreateList_L(LinkList &L,int n){
LinkList p;//起始位置
for(int i = n;i > 0;i--){
p = (LinkList)malloc( sizeof(LNode) ); //生成新结点
scanf("%d",p->data);
p->next = L->next;
L->next = p;
}
printf("创建成功!\n");

return 0;   

}

//查找第i个元素
int GetElem_L(LinkList &L,int i){
LinkList p;
p = L->next;
int j = 1;
int e;
while(p && j < i){
p = p->next;
j++;
}
if(!p || j > i){
printf("第%d个元素不存在\n",i);
}
e = p->data;
printf("查找元素为:%d\n",e);

return 0;

}

//第i个位置插入元素
int ListInsert_L(LinkList &L,int i,int e){
LinkList p = L;
LinkList s;
int j = 0;
while(p && j < i-1){
p = p->next;
j++;
}
if(!p || j > i-1){
printf("插入错误!\n");
}
s = (LinkList)malloc( sizeof(LNode) );
s->data = e;
s->next = p->next;
p->next = s;
printf("插入成功!\n");

return 0;

}

//删除第i个元素
int ListDelete_L(LinkList &L,int i){
LinkList p = L;
LinkList q;
int j = 0;
int e;
while( p->next && j < i-1 ){
p = p->next;
j++;
}
if( !(p->next) || j > i-1 ){
printf("删除错误!\n");
}

q = p->next;
p->next = q->next;
e = q->data;
printf("删除成功!\n");
free(q);

return 0;

}

//打印链表
int PrintList_L(LinkList &L){
LinkList p;
p = L->next;
if(p == NULL){
printf("这是一个空链表!\n");
}
while(p){
printf("%d ",p->data);
p = p->next;
}
printf("\n");

return 0;

}

int main(){
LinkList List;
int n;//链表元素个数
int i;//链表元素位置
int e;//链表插入的元素

printf("输入链表元素个数:");
scanf("%d",&n);

InitList_L(List);
printf("输入链表:\n");
CreateList_L(List,n);

printf("链表创建如下:\n");
PrintList_L(List);

printf("输入查找的位置:");
scanf("%d",&i);
GetElem_L(List,i);

printf("输入插入的位置和插入元素:");
scanf("%d %d",&i,&e);
ListInsert_L(List,i,e);
printf("新链表如下:\n");
PrintList_L(List);

printf("输入删除的位置:");
scanf("%d",&i);
ListDelete_L(List,i);
printf("新链表如下:\n");
PrintList_L(List);

return 0;

}
图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-02-04 21:03
    关注

    打印的不是地址,而是没有初始化的内存的内容
    scanf("%d",p->data);
    ->
    scanf("%d",&p->data);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器