<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
/**********************************************
链表的操作
BY YQG.06.3.6
***********************************************/
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
#define LENGTH sizeof(struct node)
typedef struct node
{
int elem;
struct node*next;
}list;
int InitList(list **p);
void DispList(list**p);
int empty_or_not(list**p);
int insertlist(list**p,int i,char lelem);
/*int locatelist(list*&p,int i,char&lelem);
int lengthlist(list*&p);
int deletelist(list*&p,int i,char&lelem);
void DestroyList(list**p);*/
void main()
{
list*linklist;
int tem=0;
char str;
if(!InitList(&linklist))
printf("error");
DispList(&linklist);
printf("\nInput the insert location(<%d):",tem);
scanf("%d",&tem);
printf("\nInput the data:");
scanf("%d",&str);
insertlist(&linklist,tem,str);
DispList(&linklist);
getch();
}
int InitList(list**head)
{
int n=0;
list*q,*p;
if((q=(list*)malloc(LENGTH))==NULL || ((*head)=(list*)malloc(LENGTH))==NULL)
return FALSE;
q->next=NULL;
(*head)->next=NULL;
p=(*head);
printf("\nInput the list int number(End with 0):");
scanf("%d%*c",&(q->elem));/*创建第一个结点*/
p->next=q;
while(q->elem!=0)
{
p->next=q;/*尾插法*/
p=q;
if((q=(list*)malloc(LENGTH))==NULL)
printf("ERROR");
scanf("%d%*c",&(q->elem));
q->next=NULL;
}
return TRUE;
}
void DispList(list**head)
{
list*lp=(*head);
if(empty_or_not(&lp))
{
printf("it is empty!");
return;
}
while(lp->next!=NULL)
{
printf("%d ",lp->next->elem);
lp=lp->next;
}
}
int empty_or_not(list**p)
{
return ((*p)->next==NULL);
}
int insertlist(list**p,int i,char lelem)
{
int j=0;
list*lp=(*p);
list*q=(list*)malloc(LENGTH);
if(i==0)
{
q->elem=lelem;
q->next=(*p)->next;
(*p)->next=q;
return TRUE;
}
while(lp->next!=NULL && jnext;
j++;
}
if((lp->next==NULL) && (j!= i-1))/*超过连链表的长度*/
{
free(q);
printf("error!");
return FALSE;
}
q->elem=lelem;
q->next=lp->next;
lp->next=q;
return TRUE;
}
分享到:
相关推荐
链表类 实现对不同数据的链表操作 数据可以是数 还可以是对象 结构体等等 排序插入可以继承类后加个重载比较运算符进行操作
链表操作程序(完整)C语言.txt链表操作程序(完整)C语言.txt
使用的Java语言和JavaFX库编写的链表操作演示程序源码,对于链表的几个基本操作都具有演示动画,且数据可数据产生,也可以随机产生
链表操作的动态演示.是Timer事件的一个极好的应用。
数据结构课设基于QT的链表操作演示系统源码+实验报告.zip数据结构课设基于QT的链表操作演示系统源码+实验报告.zip数据结构课设基于QT的链表操作演示系统源码+实验报告.zip数据结构课设基于QT的链表操作演示系统源码+...
C语言链表的应用,包括建立链表、删除链表、插入/删除元素操作
写更多的代码,用更多的指针, 用更多的指针,写更多的代码, C语言编程,我还是要用链表。
内有很多链表操作,是我做课设的时候写的,c的初学者可以看看我的代码,还是有一点帮助的
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目...基于QT的链表操作演示系统源码+项目说明(数据结构课程设计).zip
单向链表所有操作的c语言实现,代码经过在Linux下测试。在Windows下应该也没问题
C++课程作业-基于Qt实现的链表操作演示系统源码(含详细注释+报告).zip 1.1 题目 分别以单链表、循环链表、双向链表为例,实现线性表的建立、插入、删除、查找等基 本操作。 要求:能够把建立、插入、删除等基本操作...
易语言链表操作类源码,多种方式实现链表,单向双头链表。
链表操作 检测字母数目 容易理解 非常好的
用模板实现链表的建立删除等操作,可以根据具体情况稍作修改即可实现链表操作,或直接使用,我在链表的学习和类模板的学习和以后的编程时这种链表构造思想觉得挺好的,有点面向对象的意思……粗浅的理解呵呵!
c++模板实现双向链表操作如逆序建立双向链表,插入结点等。
链表操作及多项式,主要是实现多项式,既有代码,又有实验报告,使用C语言编写的
使用链表管理学生信息(简),包括插入、删除、追加、反转(反置)、排序、保存到文件、从文件读取
数据结构线性链表操作 链表结点的增添 删除
大连理工 数据结构上机 链表操作