数据结构上级考试练习代码,置于此以备后用!
#include<stdio.h>
//定义链表中要存储的数据类型
typedef char DataType;
//定义链表元素的数据结构
typedef struct linknode
{
DataType data;//节点的据域
struct linknode *next;
}linknode;
//头插入法建立单链表
linknode* CreateListF(void)
{
char ch;
linknode *head;
linknode *s;
head=NULL;
ch=getchar();
while(ch!='\n')
{
s=(linknode*)malloc(sizeof(linknode));
s->data=ch;
s->next=head;
head=s;
ch=getchar();
}
return head;
}
//尾插入法建立单链表
void CreateListR(linknode *head)
{
//声明尾指针及工作指针
linknode *r,*s;
char ch;
ch=getchar();
r=head;
while(ch!='\n')
{
s=(linknode*)malloc(sizeof(linknode));
s->data=ch;
r->next=s;
r=s;
ch=getchar();
}
r->next=NULL;
}
//获取链表长度
int getLength(linknode* head)
{
int length=0;
linknode *s;
s=head->next ;
while(s!=NULL)
{
s=s->next;
++length;
}
return length;
}
//获取指定位置的链表元素
linknode* getNode(linknode *head,int i)
{
int listLength=0;
int j=1;
linknode *s;
listLength=getLength(head);
if(i<1||i>listLength)
{
printf("i value is error! \n");
return NULL;
}
else
{
s=head->next ;
while(s!=NULL)
{
if(i==j)
{
return s;
}
else
{
s=s->next;
j++;
}
}
return NULL;
}
}
//在指定的位置插入一个元素
void insertList(linknode* head,DataType x,int i)
{
linknode *s,*p;
p=getNode(head,i-1);
if(p==NULL)
{
printf("the position is Error!\n");
}
else
{
s=(linknode*)malloc(sizeof(linknode));
s->data=x;
s->next=p->next;
p->next=s;
}
}
//删除指定位置元素
void deleteList(linknode *head,int i)
{
linknode *p,*s;
p=getNode(head,i-1);
if(p==NULL||p->next==NULL)
{
printf("the position is Error!\n");
}
else
{
s=p->next;;
p->next=s->next;
free(s);
}
}
//打印链表中的所有元素
void printLinkList(linknode* L)
{
linknode *nextNode;
nextNode=L;
do
{
nextNode=nextNode->next;
printf("%c \n",nextNode->data);
}
while(nextNode->next!=NULL);
}
int main()
{
linknode *flist,*rlist,*find;
int index; char value;
rlist=(linknode*)malloc(sizeof(linknode));
rlist->next=NULL;
printf("plase input a sting,end with the KEY_Enter \n");
//flist=CreateListF();
//printLinkList(flist);
CreateListR(rlist);
printLinkList(rlist);
printf("list length=%d \n",getLength(rlist));
printf("set insert node:index,value:");
scanf("%d,%c",&index,&value);
printf("insert a element!");
insertList(rlist,value,index);
printLinkList(rlist);
printf("list length=%d \n",getLength(rlist));
printf("set delete node index:");
scanf("%d",&index);
deleteList(rlist,index);
printf("delete a element!");
printLinkList(rlist);
printf("list length=%d \n",getLength(rlist));
printf("set visit node index:");
scanf("%d",&index);
find=getNode(rlist,index);
if(find!=NULL)
{
printf("this node value=%c \n",find->data);
}
}
分享到:
相关推荐
1、实现软件:Dev-C++ 2、详细的测试页面可见我《资源》专栏下的《C语言系统资源测试》。 3、适合新手下载学习。 4、基于C语言的单链表实现。 5、代码共461行 6、注释多,排版有序
本篇文章是对用C语言实现单链表的各种操作进行了详细的分析介绍,需要的朋友参考下
C语言对单链表的初始化、判断是否为空、表长、输出表、单链表的头插法、单链表的尾插法、插入元素、生成新节点、删除元素、查找元素、修改元素、清空表、释放表空间。
单链表的C语言实现,按照严蔚敏数据结构(C语言版)给的ADT写的,可能不太全。
数据结构典型范例,单链表删除操作(注:因实验需要,没有直接汉语注释和输入提醒)
c语言单链表的简单实现代码,有初学者的小伙伴可以参考一下。
用C语言实现单链表的各种操作(一)>主要是单链表的一些最基本的操作,下面,主要是一些其他的典型的算法和测试程序。 代码如下:/* 对单链表进行排序处理*/struct LNode *sort(struct LNode *head){ LinkList *p; ...
(1)熟悉将算法转换为程序代码的过程。 (2)了解顺序表的逻辑结构特性,熟练学握顺序表存储结构的 C 语言描述方法。 (3)熟练学握顺序表的基本运算:查找、插入、删除等,学握顺序表的随机存取特性。 (4)了解线性表的...
数据结构 单链表的生成算法 c语言实现
主要介绍了C语言实现单链表反转,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
1、实现软件:Dev-C++ 2、详细的测试页面可见我《资源》专栏下的《C语言系统资源测试》。 3、适合新手下载学习。 4、基于C语言的单链表实现。 5、代码共458行 6、注释多,排版有序
单链表操作较全面,代码风格良好,注释清晰
定义了单链表的基本操作,并在主函数中测试了所有定义的操作。
C语言实现链表操作,包括增加节点,删除节点,显示链表
单链表的接本操作,有在单链表中插入,删除数据的功能,以及两个单链表的合并,多项式的表达。1.单链表的数据结构的建立实现。 2.单链表元素结点插入操作实现。...4.实现单链表的合并。 5.实现一元多项式的相加。
4、基于C语言的单链表实现。 5、代码共493行 6、注释多,排版有序 7、成员信息:编号、姓名、年月、岗位工资、奖金、扣款、实发工资 8、功能:增删改查(多途径删改查)、浏览、统计(统计超过平均工资的员工信息)
1、实现软件:Dev-C++ 2、详细的测试页面可见我《资源》专栏下的《C语言系统资源测试》。 3、适合新手下载学习。 4、基于C语言的单链表实现。
1、实现软件:Dev-C++ 2、详细的测试页面可见我《资源》专栏下的《C语言系统资源测试》。 3、适合新手下载学习。 4、基于C语言的单链表实现。(没有带头节点) 5、代码共571行
用C语言链表实现进程转换,阻塞变就绪,就绪变执行,执行变阻塞三种状态的转换