今天有点忙,拙劣地写了个链表 头插入法,尾插入法。
2010-05-23 00:25
218 查看
//链表
//这个有问题。
#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node{
datatype data;
struct node *next;
}linklist;
//头插入法
linklist *createList()
{
char ch;
linklist *head,*p;
head=NULL;
ch=getchar();
while(ch!='#')
{
p=(linklist *)malloc(sizeof(linklist));
p->data=ch;
p->next=head;
head=p;
ch=getchar();
}
return head;
}
//尾插入法
linklist *createListTail()
{
char ch;
linklist *p,*head,*e;
ch=getchar();
while(ch!='#')
{
p=(linklist *)malloc(sizeof(linklist));
p->data=ch;
if(head==NULL) head=p;
else e->next=p;
e=p;
ch=getchar();
}
if(e!=NULL) e->next=NULL;
return head;
}
void display(linklist *L)
{
linklist *p;
p=L;
while(p->next)
{
printf("%c ",p->data);
p=p->next;
}
}
int main()
{
linklist *L1,*L2;
// L1=(linklist *)malloc(sizeof(linklist));
// L2=(linklist *)malloc(sizeof(linklist));
// display(L2);
L1=createList();
// L2=createListTail();
display(L1);
// display(&L2);
return 0;
}
/*
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
char data;
struct node *next;
}linklist;
linklist *creatList1()
{
char ch;
linklist *head,*p,*q;
int i=1;
head=NULL;
printf("/n请输入一个链表最后一个字符");
scanf("/n%c",&ch);
while(ch!='#')
{
p=(linklist *)malloc(sizeof(linklist));
p->data=ch;
p->next=head;
head=p;
printf("/n已建%d个字符的链表",i);
q=head;
while(q!=NULL)
{
printf("%c->",q->data);
q=q->next;
}
printf("NULL");
i++;
printf("/n请输入第%d个字符",i);
scanf("%c",&ch);
}
return (head);
}
linklist *creatList()
{
char ch;
linklist *head,*q,*p,*e;
int i=1;
printf("/n请输单字符链表的第一个字符");
head=NULL;
e=NULL;
scanf("%c",&ch);
while(ch!='#')
{
p=(linklist *)malloc(sizeof(linklist));
p->data=ch;
if(head==NULL) head=p;
else e->next=p;
e=p;
p->next=NULL;
printf("/n已建立%d个字符的链表",i);
q=head;
while(q!=NULL)
{
printf("%c->",q->data);
q=q->next;
}
printf("NULL");
i++;
printf("/n请输入单字符链表的第%d个字符",i);
scanf("%c",&ch);
}
return (head);
}
int main()
{
linklist *p;
int ch;
while(1)
{
printf("/n请选择:");
printf("/n(1)头插入法");
printf("/n(2)n尾插入法");
printf("/n(3)结束");
scanf("/n%d",&ch);
switch(ch)
{
case 1:p=creatList();break;
case 2:p=creatList();break;
case 3:return 0 ;
}
}
return 0;
}
*/
//这个有问题。
#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node{
datatype data;
struct node *next;
}linklist;
//头插入法
linklist *createList()
{
char ch;
linklist *head,*p;
head=NULL;
ch=getchar();
while(ch!='#')
{
p=(linklist *)malloc(sizeof(linklist));
p->data=ch;
p->next=head;
head=p;
ch=getchar();
}
return head;
}
//尾插入法
linklist *createListTail()
{
char ch;
linklist *p,*head,*e;
ch=getchar();
while(ch!='#')
{
p=(linklist *)malloc(sizeof(linklist));
p->data=ch;
if(head==NULL) head=p;
else e->next=p;
e=p;
ch=getchar();
}
if(e!=NULL) e->next=NULL;
return head;
}
void display(linklist *L)
{
linklist *p;
p=L;
while(p->next)
{
printf("%c ",p->data);
p=p->next;
}
}
int main()
{
linklist *L1,*L2;
// L1=(linklist *)malloc(sizeof(linklist));
// L2=(linklist *)malloc(sizeof(linklist));
// display(L2);
L1=createList();
// L2=createListTail();
display(L1);
// display(&L2);
return 0;
}
/*
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
char data;
struct node *next;
}linklist;
linklist *creatList1()
{
char ch;
linklist *head,*p,*q;
int i=1;
head=NULL;
printf("/n请输入一个链表最后一个字符");
scanf("/n%c",&ch);
while(ch!='#')
{
p=(linklist *)malloc(sizeof(linklist));
p->data=ch;
p->next=head;
head=p;
printf("/n已建%d个字符的链表",i);
q=head;
while(q!=NULL)
{
printf("%c->",q->data);
q=q->next;
}
printf("NULL");
i++;
printf("/n请输入第%d个字符",i);
scanf("%c",&ch);
}
return (head);
}
linklist *creatList()
{
char ch;
linklist *head,*q,*p,*e;
int i=1;
printf("/n请输单字符链表的第一个字符");
head=NULL;
e=NULL;
scanf("%c",&ch);
while(ch!='#')
{
p=(linklist *)malloc(sizeof(linklist));
p->data=ch;
if(head==NULL) head=p;
else e->next=p;
e=p;
p->next=NULL;
printf("/n已建立%d个字符的链表",i);
q=head;
while(q!=NULL)
{
printf("%c->",q->data);
q=q->next;
}
printf("NULL");
i++;
printf("/n请输入单字符链表的第%d个字符",i);
scanf("%c",&ch);
}
return (head);
}
int main()
{
linklist *p;
int ch;
while(1)
{
printf("/n请选择:");
printf("/n(1)头插入法");
printf("/n(2)n尾插入法");
printf("/n(3)结束");
scanf("/n%d",&ch);
switch(ch)
{
case 1:p=creatList();break;
case 2:p=creatList();break;
case 3:return 0 ;
}
}
return 0;
}
*/
相关文章推荐
- 链表的头插入法建立和尾插入法建立
- 今天主要学习的是 链表,单链,循环链表和双向链表,总体感觉还可以,还是有点懵懵的,需要勤加练习。
- 今天有点郁闷
- 难道今天有点空闲,回来冒个泡。
- 今天有点冲动
- 今天写链表时候遇到的问题,请高手解答一下
- 今天有点受刺激
- 表头插入法建立链表
- 今天有点懒
- 第三天笔记,今天听的有点晕,幸好公司年会,我们放3天假,所以慢慢复习吧
- 今天有点困,脑袋不是很清醒!
- 今天可能有点衰
- 今天,有点晦气
- 1.1头尾插入法建立链表
- 今天碰到个怪异的问题..js代码和c#得出的结果大多一样,个别有点区别
- 今天思路有点乱,随便记一点关于 xml-rpc 的
- 今天发现CSDNBLOG有点问题。
- 今天的小日子好像有点不一样!
- 今天发现,原来yahoo也不是不可取,还是有点东西可以搜搜的。Research on Location-Sensitive Search Engine