数据结构——单链表
来源:互联网 发布:通用网络加速 编辑:程序博客网 时间:2024/06/06 14:20
今天浪费了好多时间,也许是心里想着明天的考试吧……
可自己也知道这次的考试,自己毕竟过不了了,只好等到今年11月份,想想那时自己已经大三了;还有那么多时间吗!很懊恼今天不知怎么回事,感叹环境真的可以影响一个人,真的可以…………
把今天的学习笔记写下来,没有进行好好的整理,
这回单链表的功能较多,操作比较散,最后一个功能有序合并,让自己做得很是郁闷,不说了……
写下自己的学习笔记,文章只适合刚学数据结构的人,有一定的借鉴价值,本人亲自调试的……
可以运行,因为功能是一步步实现的,有的注销了,想实现的自己好好,看看代码就可以,
很抱歉……自己本准备把所有功能合并起来,做一个小的程序,无奈今天真的心情不太好……
只说一句——抱歉…………
下面是学习笔记…………
#include<stdio.h>
#include<malloc.h>
typedef struct Node
{
char data;
struct Node * next;
}Node,*Linklist;
void inlitlist(Linklist *L)
{
*L=(Linklist)malloc(sizeof(Node));
(*L)->next=NULL;
}
/*
void CreatFromHead(Linklist L)
{
Node *s;
char c;
int flag=1;
while(flag)
{
c=getchar();
if(c!='#')
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
s->next=L->next;
L->next=s;
}
else
flag=0;
}
}
*/
void CreatFromTail(Linklist L)
{
Node *s;
char c;
int flag=1;
while(flag)
{
c=getchar();
if(c!='#')
{
s=(Node*)malloc(sizeof(Node));
s->next=NULL;
s->data=c;
L->next=s;
L=s;
}
else
flag=0;
}
}
/*
char searchbynumber(Linklist L,int i)
{
int j=1;
Node *p;
char c;
p=(Node*)malloc(sizeof(Node));
p=L->next;
while(p->next!=NULL&&j<i)
{
j++;
p=p->next;
}
if(!p->next)
{
printf("查找位置不合法……/n");
return NULL;
}
if(j==i)
{
c=p->data;
}
return c;
}
*/
/*
int searchbyx(Linklist L,char c)
{
Node *p;
p=(Node*)malloc(sizeof(Linklist));
p=L->next;
int j=1;
while(p->next!=NULL&&p->data!=c)
{
j++;
p=p->next;
}
if(!p->next)
{
printf("没有要查找的元素……/n");
return NULL;
}
if(p->data==c)
return j;
}*/
/*
int Length(Linklist L)
{
int j=0;
Node *p;
p=(Node*)malloc(sizeof(Node));
p=L->next;
while(p!=NULL)
{
j++;
p=p->next;
}
return j;
}
*/
/*
void insert(Linklist l,int a,char c)
{ Node *m,*n;
m=(Node*)malloc(sizeof(Node));
m=l->next;
int j=1;
while(m!=NULL&&j<a-1)
{
j++;
m=m->next;
}
if(a<1||!m)
{
printf("插入的位置不合法 ……/n");
return;
}
else
{
n=(Node*)malloc(sizeof(Node));
n->data=c;
n->next=NULL;
n->next=m->next;
m->next=n;
}
}
*/
/*
char dellist(Linklist L,int d)
{
Node *p;
char e;
p=(Node*)malloc(sizeof(Node));
p=L->next;
int j=1;
while(p!=NULL&&j<d-1)
{
p=p->next;
j++;
}
if(!p)
{
printf("删除位置不合法……/n");
return NULL;
}
else
{
e=p->next->data;
p->next=p->next->next;
}
return e;
}
*/
Linklist merge(Linklist LA, Linklist LB)
{
Node *pa,*pb;
Node *r;
Linklist LC;
pa=LA->next;
pb=LB->next;
LC=LA;
// LC->next=NULL;
r=LC;
while(pa!=NULL && pb!=NULL)
{
if(pa->data <= pb->data)
{
r->next=pa;
r=pa;
pa=pa->next;
}
else
{
r->next=pb;
r=pb;
pb=pb->next;
}
}
if(pa)
r->next=pa;
else
r->next=pb;
// free(LB);
return(LC);
}
void main()
{
Linklist L,La,Lb,Lc;
Node *p,*q,*m;
int i;
char a;
int b;
int c;
char e;
int d;
char f;
inlitlist(&L);
/*
printf("采用头插法建立链表以#号键结束:/n");
CreatFromHead(L);
printf("显示链表:/n");*/
/*
printf("采用尾插法建立链表以#号键结束:/n");
CreatFromTail(L);
printf("显示链表:/n");
p=L->next;
while(p!=NULL)
{
printf("%c ",p->data);
p=p->next;
}
*/
/*
printf("/n输入你要查找的元素的位置:");
scanf("%d",&i);
a=searchbynumber(L,i);
if(a)
printf("查找的元素为:%c/n",a);
else
return;
*/
/*
printf("/n请输入要查找的元素:");
fflush(stdin);
scanf("%c",&a);
b=searchbyx(L,a);
if(b)
printf("查找的元素位置为:%d/n",b);
else
return;
*/
/*
printf("/n链表的长度为:");
c=Length(L);
printf("%d/n",c);
*/
/*
printf("/n请输入要插入的位置和元素:/n");
fflush(stdin);
scanf("%d,%c",&b,&e);
insert(L,b,e);
q=L->next;
while(q!=NULL)
{
printf("%c ",q->data);
q=q->next;
}
*/
/*
printf("/n写出你要删除的元素的位置:");
scanf("%d",&d);
f=dellist(L,d);
if(f)
printf("删除的元素为:%c/n",f);
else
return;
printf("删除后的数组为:/n");
q=L->next;
while(q!=NULL)
{
printf("%c ",q->data);
q=q->next;
}
*/
inlitlist(&La);
printf("采用尾插法建立链表a以#号键结束:/n");
CreatFromTail(La);
printf("显示链表:/n");
p=La->next;
while(p!=NULL)
{
printf("%c ",p->data);
p=p->next;
}
inlitlist(&Lb);
printf("/n采用尾插法建立链表b以#号键结束:/n");
CreatFromTail(Lb);
printf("显示链表:/n");
q=Lb->next;
while(q!=NULL)
{
printf("%c ",q->data);
q=q->next;
}
Lc=merge(La,Lb);
printf("/n 合并后的链表——显示链表:/n");
m=Lc->next;
while(m!=NULL)
{
printf("%c ",m->data);
m=m->next;
}
}
单链表的基本操作——都已经实现了——只要好好看看——就可以明白——
代码在机子上调试的话,只有有序合并一个功能,其他,自己只要好好改改,就可以了…………
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构—单链表瞎搞
- 数据结构—单链表
- 【数据结构】单链表—逆置单链表
- 数据结构—单链表
- 用c++函数结构计算时间差
- 经典查询
- vc-study-8
- 类的调用
- 数据结构——顺序表
- 数据结构——单链表
- 数据结构——单链表
- Ant安装并调试gwt程序流程
- 数据结构——双向链表,循环链表
- 使用eclipse引入gwt例程
- 数据结构——单链表,多项式链表
- 数据结构——顺序栈,双向顺序栈,链栈
- 学习嵌入式系统的10点建议(转载)
- 数据结构——顺序串