数据结构中如何建立单链表的问题
我刚刚接触数据结构,编程感觉和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之类的可以实现吗?
或者请高手们你们有自己写法的单链表吗,可以让我参考下,谢谢谢谢,小弟刚刚接触数据结构,这是一门蛮难得课程,但是为了要专升本,这门课必须好好学,不论多难。。。 展开
#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之类的可以实现吗?
或者请高手们你们有自己写法的单链表吗,可以让我参考下,谢谢谢谢,小弟刚刚接触数据结构,这是一门蛮难得课程,但是为了要专升本,这门课必须好好学,不论多难。。。 展开
展开全部
代码如下:
#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); }
#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); }
展开全部
#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); }
这个程序基本的链表操作都有了 望楼主采纳
#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); }
这个程序基本的链表操作都有了 望楼主采纳
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
题目为:编一算法,建立一个带头结点的单链表,用前(头)插法实现。 PS这个程序是以前做的,看起来复杂,其实是太多的判断和提示内容而已,你看看主
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询