数据结构中如何建立单链表的问题

我刚刚接触数据结构,编程感觉和C语言还是有那么区别的。。现在遇到创建单链表的问题,不知道该怎么做。。书上给出个代码说用C语言描述单链表的结点结构是如下代码:#define... 我刚刚接触数据结构,编程感觉和C语言还是有那么区别的。。现在遇到创建单链表的问题,不知道该怎么做。。书上给出个代码说用C语言描述单链表的结点结构是如下代码:
#define DATATYPE2 char
typedef struct node

DATATYPE2 data;
struct node *next;
}LINKLIST;
我的理解这好像是创建了一个单链表,但是该怎么输入数据进去呢?
然后书上介绍了头插入的单链表和尾插入的单链表,代码中好像是在主函数中运用的..
头插入的代码如下:
main()
{LINKLIST *head=NULL,*t;
char ch;
while((ch=getchar())!=‘$’)
{t=malloc(sizeof(LINKLIST));
t->data=ch;
t->next=head;
head=t;

那么我想请问的是这两个代码能够实现创建单链表嘛?
例如我要输入a,b,c,d之类的可以实现吗?
或者请高手们你们有自己写法的单链表吗,可以让我参考下,谢谢谢谢,小弟刚刚接触数据结构,这是一门蛮难得课程,但是为了要专升本,这门课必须好好学,不论多难。。。
展开
 我来答
12917736427c66b6
2015-08-02 · TA获得超过4.1万个赞
知道大有可为答主
回答量:7541
采纳率:83%
帮助的人:623万
展开全部
代码如下:
#include "stdio.h"
#include <stdlib.h>
typedef struct node { int data; struct node *next; } listnode;
listnode* INITLIST() { listnode *hd=(listnode *)malloc(sizeof(listnode));
hd->next=NULL;
return hd; }
void CREALIST(listnode *hd)
{ int dt;
scanf("%d",&dt);
while(dt!=-1) {
listnode *p=(listnode *)malloc(sizeof(listnode));
p->data=dt;
p->next=hd->next;
hd->next=p;
scanf("%d",&dt);
}
}
void PRINTLIST(listnode *hd) { l
istnode *p=hd->next;
while(p!=NULL) {
printf("%d ",p->data);
p=p->next; } }
void FREELIST(listnode *hd) {
while(hd->next!=NULL)
{
listnode *p=hd->next;
hd->next=p->next;
free(p); } }
void main() { listnode *head=NULL; head=INITLIST(); CREALIST(head); PRINTLIST(head); FREELIST(head); free(head); }
玛丽米奇
2011-09-21
知道答主
回答量:9
采纳率:0%
帮助的人:3.7万
展开全部
#include "stdio.h"
#include <stdlib.h>
typedef struct node { int data; struct node *next; } listnode;
listnode* INITLIST() { listnode *hd=(listnode *)malloc(sizeof(listnode));
hd->next=NULL;
return hd; }
void CREALIST(listnode *hd)
{ int dt;
scanf("%d",&dt);
while(dt!=-1) {
listnode *p=(listnode *)malloc(sizeof(listnode));
p->data=dt;
p->next=hd->next;
hd->next=p;
scanf("%d",&dt);
}
}
void PRINTLIST(listnode *hd) { l
istnode *p=hd->next;
while(p!=NULL) {
printf("%d ",p->data);
p=p->next; } }
void FREELIST(listnode *hd) {
while(hd->next!=NULL)
{
listnode *p=hd->next;
hd->next=p->next;
free(p); } }
void main() { listnode *head=NULL; head=INITLIST(); CREALIST(head); PRINTLIST(head); FREELIST(head); free(head); }
这个程序基本的链表操作都有了 望楼主采纳
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
quxu9321
2011-09-18 · 超过15用户采纳过TA的回答
知道答主
回答量:226
采纳率:0%
帮助的人:105万
展开全部
题目为:编一算法,建立一个带头结点的单链表,用前(头)插法实现。 PS这个程序是以前做的,看起来复杂,其实是太多的判断和提示内容而已,你看看主
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式