链表的基本操作

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define mem(x,y) memset(x,y,sizeof(x))
using namespace std;
typedef long long LL;
struct Node{
	int date;
	struct Node *next;
};
Node *Creatlist(Node *head,int n){
	head->next=NULL;
	for(int i=0;i<n;i++){
		Node *p;
		p=(Node*)malloc(sizeof(Node));
		scanf("%d",&p->date);
		p->next=head->next;
		head->next=p;
	}
	return head;
}
Node *Insertlist(Node *head,int pos,int val){
	Node *p,*q;
	p=head;
	for(int i=1;i<pos;i++){
		p=p->next;
	}
	q=(Node *)malloc(sizeof(Node));
	q->date=val;
	q->next=p->next;
	p->next=q;
	return head;
}
Node *Dellist(Node *head,int pos){
	Node *p,*pl;
	p=head;
	for(int i=1;i<pos;i++)p=p->next;
	pl=p->next;
	p->next=pl->next;
	free(pl);
	return head;
}
void Display(Node *head){
	Node *p;
	p=head->next;
	while(p!=NULL){
		printf("%d ",p->date);
		p=p->next;
	}
	puts("");
}
int main(){
	int n;
	Node *head;
	while(~scanf("%d",&n)){
		head=(Node*)malloc(sizeof(head));
		head->next=NULL;
		head=Creatlist(head,n);
		Display(head);
		int pos,val;
		puts("添加元素");
		scanf("%d%d",&pos,&val);
		head=Insertlist(head,pos,val);
		Display(head);
		puts("删除元素");
		scanf("%d",&pos);
		head=Dellist(head,pos);
		Display(head);
	}
	return 0;
}

  

时间: 2024-07-28 18:11:26

链表的基本操作的相关文章

《实验课---单链表的基本操作》

//线性表---链表的基本操作#include<stdio.h>#include<stdlib.h>#include<conio.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define NULL 0typedef int Status; //函数结果状态代码typedef int ElemType; //数据元素类型//------线性表的单链表存储结构

从新定义线性链表及其基本操作

链表在空间的合理利用上和插入.删除时不需要移动等优点,因此在很多场合下,它是线性表的首先储存结构.然而它也存在着实现某些基本操作,如求线性表的长度时不如顺序储存结构的特点.因而从新定义线性链表及其基本操作 头文件: #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define MYOVERFLOW -2 typedef int Status; typedef int Elemty

数据结构学习之单向链表的基本操作(非递归实现)

[摘要]本文讨论的均为带头结点的线性链表的基本操作,包括创建.删除.插入.打印等等,欢迎大家批评指正错误. (1)单链表存储结构 typedef struct LNode { int data; struct LNode *next; }LinkList; (2)创建链表 /* 功能:构建一个空的带头节点的单链表*/ Status InitList (struct LNode **L) { (*L) = (struct LNode *)malloc(sizeof(struct LNode));

链表(二)——单向链表的基本操作(创建、删除、打印、结点个数统计)

1.指针的联动 通过两个指针分别指向前驱和后继结点,并在单向链表上进行移动,当指针指向待处理的结点时,该结点的前驱也有指针指向. 2.设有一个无序单向链表,且数据域的值均不相同,使指针pmin指向最小值结点,并使指针prem指向最小值结点的前驱结点: 代码片段: for(p = head; p; q = p, p = p->next) { if(pmin->data > p->data) { pmin = p; prem = q; } } 3.单向链表的删除算法 注:使用mallo

数据结构与算法-链表的基本操作---ShinPans

//链表操作:建立.插入.删除.查找.倒置.删除等基本操作 #include<stdio.h> #include<stdlib.h> typedef  struct LNode {       int data;       structLNode *next; }LNode,*Llist; LNode *creat_head();//创建一个空表 void creat_list(LNode *,int);//创建一个长度为n的线性链表 void insert_list(LNode

线性链表的基本操作(删除,插入等)

主要内容如题,由于感觉自己对链表这块的知识真的很薄弱. 我之前还时不时的去看链表相关的知识,也算是复习把,但是效果不尽人意. 时间可以淡忘一切,有的很慢,有的很快,而我感觉自己对链表的学习则是一瞬的时间. 哈哈,当然也没有这么夸张啦. 还是觉着把单链表的基本操作自己再撸一遍,这个感觉很有必要. 果然在编写的过程中发现很多问题,不过好在有些不太好理解的部分后面在草稿纸上画了一下才顺利编写出对应的代码.   我把代码贴上来也方便失忆后的恢复对链表的记忆.我估计后面自己看代码都有可能看不太明白.  

[数据结构]链表的基本操作

链表 可以用任意一组存储单元来存储单链表中数据元素(存储单元可以是不连续的),而且,除了存储每个数据元素ai的值以外,还必须存储指示其直接后继元素的信息.这两部分信息组成的数据元素ai的存储映像称为结点.N个结点链在一起被称为链表,当结点只包含其后继结点的信息的链表就被称为单链表. 链表定义如下数据类来存储结点信息: public class Node { Node next = null; int data; public Node(int data){ this.data = data; }

链表的基本操作之_增删改查

<span style="font-size:32px;"><strong style="background-color: rgb(51, 255, 51);">链表的基本操作之_增删改查</strong></span> #include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct Node { int

用Java实现单链表的基本操作

笔试题中经常遇到单链表的考题,下面用java总结一下单链表的基本操作,包括添加删除节点,以及链表转置. package mars; //单链表添加,删除节点 public class ListNode { private Node head; public ListNode(){ head=null; } //在链表前添加节点 public void addpre(int dvalue){ Node n=new Node(dvalue); if(head==null){ head=n; }els

java版的单向链表的基本操作

首先定义链表节点的结构: package com.moluo.linklist; /** * * @author 行者摩罗 * */ public class Node { private int data; private Node next; public int getData() { return data; } public void setData(int data) { this.data = data; } public Node getNext() { return next;