#include<stdio.h>
#include<stdlib.h>
#define ElemType int
typedef struct Node{
struct Node *next;
ElemType data;
}Node,*LinkList;
LinkList createLinkH(int n){ //头插法
Node *L;
int x,i;
//初始化
L = (Node*)malloc(sizeof(Node));
L->next=NULL;
printf("请输入元素:\n");
for(i=0;i<n;i++){
Node *p;
p = (Node*)malloc(sizeof(Node));
scanf("%d",&x);
p->data = x;
p->next = L->next;
L->next = p;
}
return L;
}
LinkList createLinkR(int n){//尾插法
Node *L;
Node *r;
int i,x;
L=(Node*)malloc(sizeof(Node));
L->next=NULL;
r = L;
printf("请输入元素:\n");
for(i=0;i<n;i++) {
Node *p;
p = (Node*)malloc(sizeof(Node));
scanf("%d",&x);
p->data = x;
r->next = p;
r = p;
}
r->next=NULL;
return L;
}
int AddNode(LinkList L,int pos,ElemType ele){
LinkList p;
Node *s;
p=L;
int j=1;
while(p&&j<pos){
p=p->next;
++j;
}
if(!p||j>pos){
return 0;
}
s = (Node*)malloc(sizeof(Node));
s->data = ele;
s->next = p->next ;
p->next = s;
return 1;
}
int deleteElem(LinkList L,int pos){
LinkList p,s;
p=L;
int j=1;
while(p&&j<pos){
p=p->next;
++j;
}
if(!p||j>pos){
return 0;
}
s=p->next;
p->next=s->next;
free(s);
return 1;
}
int getElem(LinkList L,int pos){
Node *p;
p=L->next;
int i=1;
while(p&&i<pos){
p=p->next;
++i;
}
if(!p||i>pos){
return 0;
}
return p->data;
}
void printLink(LinkList L){
Node *p;
for(p=L->next;p!=NULL;p=p->next){
printf("%d ",p->data);
}
printf("\n");
}
int getSize(LinkList L){
Node *p;
int count=0;
for(p=L->next;p!=NULL;p=p->next){
count++;
}
return count;
}
int main(){
LinkList L;
int n;
printf("输入单链表的长度:");
scanf("%d",&n);
L = createLinkR(n);
printLink(L);
AddNode(L,2,7);
printLink(L);
printf("大小为:%d\n",getSize(L));
deleteElem(L,2);
printLink(L);
printf("第二个数为:%d\n",getElem(L,2));
printf("大小为:%d\n",getSize(L));
}
数据结构c语言实现单链表
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 链表和数组是两种最基本的数据结构,都属于线性表,常常放在一起作比较,主要区别在于数组要求逻辑顺序和内存上物理顺序一...
- 作者原创,转载请注明出处。 个人博客:renzhe.name 用 C 语言实现链式存储结构的线性表,即单链表。本文...
- 线性表 线性表概念 线性表定义:具有相同特性数据元素的有限序列。线性表的逻辑结构:线性结构。只有一个表头,只有一个...