数据结构上级考试练习代码,置于此以备后用!
#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语言实现单链表 完整源码 ,内含测试代码,用 VS 、GCC 编译器 打开,直接可以运行 。代码详细说明地址:https://blog.csdn.net/weiweiliude2/article/details/138145964
本项目聚焦于使用C语言实现单链表,特别是带头结点的单链表,这是一种非常常见且实用的链表形式。下面将详细阐述单链表的基本概念、带头结点的必要性以及如何在C语言中实现其基本操作。 单链表是一种线性数据结构,...
本篇文章将深入探讨如何用C语言实现单链表的增、删、查、改四种基本操作。 ### 1. 单链表的基本结构 首先,我们需要定义一个链表节点结构体,如下所示: ```c typedef struct Node { int data; // 数据域,这里...
循环单链表是一种常见的数据结构,它在C语言中被广泛用于实现各种算法和数据管理。循环单链表与普通单链表的主要区别在于最后一个节点的指针不再为NULL,而是指向链表的第一个节点,形成了一个环状结构。这种结构在...
下面是c语言实现单链表算法的示例代码: ```c #include #include typedef char DataType; typedef struct Node{ DataType data; struct Node * Next; }ListNode,* LinkList; void Judement(LinkList head){ ...
C语言对单链表的初始化、判断是否为空、表长、输出表、单链表的头插法、单链表的尾插法、插入元素、生成新节点、删除元素、查找元素、修改元素、清空表、释放表空间。
文件"单链表.cpp"可能包含了这些操作的实现代码,而"单链表.exe"则是编译后的可执行程序,可以直接运行来演示这些操作的效果。 总的来说,理解和掌握单链表的创建、插入、查找、删除等基本操作是学习数据结构和算法...
数据结构典型范例,单链表删除操作(注:因实验需要,没有直接汉语注释和输入提醒)
在这个“数据结构C语言版-单链表的操作程序代码”中,我们将深入探讨单链表的概念、操作以及C语言实现。 单链表是一种线性数据结构,其中每个元素(节点)包含两部分:数据部分和指针部分。数据部分存储实际的信息...
本文将详细解析以C语言实现的单链表,包括其原理、操作以及代码实现。 单链表是一种线性数据结构,每个元素(节点)包含两部分:数据域和指针域。数据域存储实际的数据,而指针域存储指向下一个节点的地址。由于...
这里我们将深入探讨如何在C语言中实现一个带头结点的单链表,包括其创建、插入、删除、遍历和打印等基本操作。 首先,我们需要定义链表的节点结构。带头结点的链表会在链表的开头有一个特殊的节点,它的数据部分...
**C语言实现单链表** 在C语言中,单链表的节点通常用结构体表示,如`struct Node`,包括数据域和指针域。`LinkedList.c`和`LinkedList.h`可能包含了实现这些操作的函数定义和声明。`main.c`文件可能包含主程序,调用...
单链表是计算机科学中一种基础的数据结构,它在C语言中通过指针来实现。在C语言中,我们不直接处理对象,而是通过指针间接操作内存中的数据。单链表由一系列节点组成,每个节点包含数据部分和一个指向下一个节点的...
本文将详细介绍如何用C语言实现单链表的各种操作。 首先,我们定义链表的结构体`LNode`,它包括一个数据域`ElemType data`和一个指向下一个节点的指针`struct LNode *next`: ```c typedef struct LNode{ ...
在C语言中实现单链表通常涉及以下几个步骤:定义数据结构、初始化链表、添加节点、删除节点、获取链表长度、获取特定节点的值以及打印链表。以下是详细的知识点: 1. 单链表的定义:在C语言中,单链表由一系列节点...
C语言期末大作业——图书信息管理系统(C语言,单链表) 1. 使用链表保存图书信息,每个节点要求包含图书的编号、书名、作者、购买日期和价格信息; 2. 可以对当前图书数据库进行增加、删除操作,并实现按图书编号...
在本文中,我们将深入探讨C语言如何通过结构体和指针来实现单链表。 首先,我们需要理解单链表的基本概念。单链表是一种线性数据结构,其中每个元素(节点)包含一个数据部分和一个指向下一个节点的引用(或称为...