数据结构之单链表创建(c++)
说明:使用c++创建单链表,使用头插法,动态空间规划法,以‘’#‘’或‘$’结束j键盘输入,最后打印出链表内容。
必备条件:结构体、指针、动态规划、循环语句等
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
typedef struct Node /*结点类型定义*/
{ char data;
struct Node *next;
}Node, *LinkList; /* LinkList为结构指针类型*/
LinkList CreateFromHead()
/*通过键盘输入表中元素值,利用头插法建单链表,并返回该单链表头指针L*/
{ LinkList L;
Node *s;
char c;
int flag=1;
L=(LinkList)malloc(sizeof(Node)); /*建立头结点*/
L->next=NULL; /*建立空的单链表L*/
while(flag) /* flag初值为1,当输入"$"时,置flag为0,建表结束*/
{ c=getchar();
if(c!='$')
{s=(Node*)malloc(sizeof(Node)); /*建立新结点s*/
s->data=c;
s->next=L->next;/*将s结点插入表头*/
L->next=s;
}
else
flag=0;
}
return L;
}
LinkList CreateFromHead222()
/*通过键盘输入表中元素值,利用头插法建单链表,并返回该单链表头指针L*/
{ LinkList L;
Node *s;
char c;
L=(LinkList)malloc(sizeof(Node)); /*建立头结点*/
L->next=NULL; /*建立空的单链表L*/
while(c!='#') /* flag初值为1,当输入"$"时,置flag为0,建表结束*/
{s=(Node*)malloc(sizeof(Node)); /*建立新结点s*/
s->data=c;
s->next=L->next;/*将s结点插入表头*/
L->next=s;
c=getchar();
}
return L;
}
void main()
{ LinkList l,l2;
Node *p;
printf("用头插法建立单链表,请输入链表数据,以$结束!\n");
l=CreateFromHead();
l2=CreateFromHead222();
p = l->next;
while(p!=NULL)
{ printf("%c%c",p->data,' ');
p=p->next;
}
printf("%c\n");
p=l2->next;
while(p!=NULL)
{
printf("%c%c",p->data,' ');
cout<<” ”<<p->data;
p=p->next;
}
}
加油,菜鸟程序员!