关于数据结构中单链表一些操作

来源:互联网 发布:java向多人发邮件 编辑:程序博客网 时间:2024/06/05 20:49
#include <iostream>
#include<stdlib.h>
using namespace std;
typedef struct node
{
int data ;
struct node *next ;


}Node,*PNode;
void creat_linklist(PNode linklist, int n)
{


for (int i = 0; i < n; ++i)
{
PNode p;
p = (PNode)malloc(sizeof(Node));
p->data = i;
p->next = linklist->next;
linklist->next = p;
}
}
int get_length(PNode linklist)
{

PNode p;
p = linklist;
int i = 0;
while (p->next != NULL)
{
p = p->next;
i++;
}
return i;


}


void insert_node(PNode linklist,int i,int e)
{


if (i < 1)
cout << "error" << endl;
PNode p;
p = linklist;
int j = 0;
while (j < i - 1)
{
p = p->next;
j++;
}
PNode p_insert;
p_insert = (PNode)malloc(sizeof(PNode));
p_insert->data = e;
p_insert->next = p->next;
p->next = p_insert;
}
void delete_node(PNode linklist, int i, int &e)
{
PNode p = linklist;
int j = 0;
while (j < i -1)
{
p = p->next;
j++;
}
e = p->next->data;
p->next = p->next->next;



}
void get_ele(PNode linklist, int i,int &e)
{
if (i < 1)
cout << "error" << endl;
PNode p;
p = linklist;
int j = 0;
while (j < i)
{
p = p->next;
j++;
}
e =  p->data;
}
void delete_link(PNode linklist)
{




PNode p,q;
p = linklist;
while (p != NULL)
{
q = p->next;
free(p);
p = q;
}
linklist->next = NULL;








}
void main()
{
Node *linklist;
linklist = (PNode)malloc(sizeof(Node));
int n = 100;
linklist->next = NULL;
linklist->data = n;
creat_linklist(linklist,n);
int i = get_length(linklist);
int e;
i = 1;
get_ele(linklist,i,e);
//insert_node(linklist,i,0);
delete_node(linklist, 3, e);
i = get_length(linklist);
delete_link(linklist);
getchar();
}
0 0
原创粉丝点击