创建单链表

来源:百度知道 编辑:UC知道 时间:2024/06/06 20:23:11
实验目的:掌握单链表的数据类型定义、头插法建单链表(算法2.11)、尾插法建单链表、输出单链表中的元素、销毁单链表等操作的实现。
实验要求:
1. 认真阅读和掌握教材上和本实验相关的内容和算法。
2. 上机将相关算法实现。
3. 实现上面实验目的要求的功能,并能进行简单的验证。
实验代码框架:
//实验二
#include <malloc.h>
#include <stdio.h>

//线性表的单链表存储结构:结点结构及自定义数据类型
……
//从表头插入新结点创建带表头结点的单链表,对应教材P30算法2.11。
void CreateListFromHead(LinkList &L, int n)
{
……
}

//从表尾插入新结点创建带表头结点的单链表。
void CreateListFromTail(LinkList &L, int n)
{
……
}

//在屏幕上输出单链表中的元素
void PrintList(LinkList L)
{
……
}

//销毁单链表
void DestroyList(LinkList &L)
{
……
}

//主函数
void main(){
int n; //表长
printf("请输入要建立的线性表的长度:\n");
scanf("%d",&n);

//头插法建立单链表
LinkList L = NULL;
printf("\n开始头插法建单链表,请逆序输入线性表的各元素...\n");
CreateListFromHead(L,n);
printf("下面输出刚建立的线性表中元素:\n");

额。。。。我的是c++的 你要不?

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
//---------------------------------------
typedef struct LNode{//定义结构体
int data;
struct LNode *next;
}LNode,*LinkList;

void CreateList(LinkList & L,int n){
//创建一个n个元素的单链表

L=(LinkList) malloc(sizeof(LNode));
L->next=NULL;
LNode *q=L;
cout<<"输入数"<<endl;
for(int i=n; i>0; i--){
LNode* p=(LinkList)malloc(sizeof(LNode));
cin>>p->data;
q->next=p;
p->next=NULL;
q=p;
}

}

int ListDel(LinkList &L,int i,int &e){
//在带头节点的单链表L中,删除第i个元素,并由e返回其值
LNode *p=L;
int j=0;
while(p->next && j<i-1){
p=p->next;
++j;
}
if(!(p->next)||j>i-1) return -1;
LNode *q=p->next;
p->next=q->next;<