帮忙看看这个单链表的程序有什么问题,谢谢!

youngshaver 2010-12-13 09:18:33
想输出一下单链表中每个节点的值,可是得不到结果,求大家帮忙看看有什么问题呢?谢谢


#include <stdio.h>

typedef struct _ThreadInfo{
struct _ThreadInfo * next;
int a;
}ThreadInfo;



static __inline__ void insert(ThreadInfo *lst, int value){
ThreadInfo* ti= (ThreadInfo *)malloc(sizeof(ThreadInfo));
ti->a = value;
ti->next = lst;
lst = ti;
}

static __inline__ void init(ThreadInfo *lst){
lst->next = NULL;

}

static __inline__ void printlist(ThreadInfo *lst){
ThreadInfo *temp = lst->next;
while(temp!=NULL){
printf("%d\n", temp->a);
}
}

int main(){
ThreadInfo* lst = (ThreadInfo *)malloc(sizeof(ThreadInfo));
init(lst);
int i;
for(i=1; i<=10; i++){
insert(lst, i);
}
printlist(lst);

return 0;
}
...全文
106 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobo9840520 2010-12-14
  • 打赏
  • 举报
回复
#include <stdio.h>
#include<malloc.h>
typedef struct _ThreadInfo{
struct _ThreadInfo * next;
int a;
}ThreadInfo;



void insert(ThreadInfo *lst, int value){
ThreadInfo* ti= (ThreadInfo *)malloc(sizeof(ThreadInfo));
ti->a=value;
ti->next=lst->next;
lst->next=ti;
}

void init(ThreadInfo *lst){
lst->next = NULL;

}

void printlist(ThreadInfo *lst){
ThreadInfo *temp = lst->next;
while(temp!=NULL){
printf("%d\n", temp->a);
temp=temp->next;
}
}

int main(){ int i;
ThreadInfo* lst = (ThreadInfo *)malloc(sizeof(ThreadInfo));
init(lst);

for(i=1; i<=10; i++){
insert(lst, i);
}
printlist(lst);

return 0;
}

bobo9840520 2010-12-13
  • 打赏
  • 举报
回复
static __inline__ void insert(ThreadInfo *lst, int value){
ThreadInfo* ti= (ThreadInfo *)malloc(sizeof(ThreadInfo));
ti->a = value;
ti->next = lst;
lst = ti;
}

???????????
小弟认为楼主想当然了,楼主以为ThreadInfo *lst这样能让lst返回,但这样应该是不会返回的,楼主再仔细考虑下。
greex 2010-12-13
  • 打赏
  • 举报
回复
这个地方要循环起来吧:
static __inline__ void printlist(ThreadInfo *lst){
ThreadInfo *temp = lst->next;
while(temp!=NULL){
printf("%d\n", temp->a);
}
woods2001 2010-12-13
  • 打赏
  • 举报
回复
static __inline__ void insert(ThreadInfo *lst, int value){
ThreadInfo* ti= (ThreadInfo *)malloc(sizeof(ThreadInfo));
ti->a = value;
ti->next = lst;
lst = ti;
}
这个函数写的有问题
ti->a = value;
ti->next = lst->next;
lst->next = ti;
你试下
youngshaver 2010-12-13
  • 打赏
  • 举报
回复
问题在lst = ti;
youngshaver 2010-12-13
  • 打赏
  • 举报
回复
不用static __inline__ 也可以
bobo9840520 2010-12-13
  • 打赏
  • 举报
回复
跟楼上有同样的困惑,求大侠指点。
damihu89 2010-12-13
  • 打赏
  • 举报
回复
同样是菜鸟 不懂你为什么用static __inline__ 求高手解答
另外 malloc函数要用到头文件 好像是stdlib.h吧

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧