求c++编的双向链表的插入与删除代码

谢谢了,我们老师不值得作业,不会做,希望那位大哥大姐帮帮忙,本人也没呢么多少的分值悬赏,只能给五分............再次感谢

#include <cstdlib>
#include <iostream>

using namespace std;

typedef struct _node{
int data;
struct _node *next;
struct _node *pre;
}Node,*Link;

//void Insert(Node a);
//void delet(Link h,Node a);
void show(Link h);

int main(int argc, char *argv[])
{
Link hlink,p,q;
Node nod;
int num,del,add;

nod.data=1;//第一个结点是1,随便着结点的增加,改结点最后会在链表的结尾
nod.next=NULL;
nod.pre=NULL;

hlink ->pre= NULL;
hlink->next=&nod;
nod.pre=hlink;

cout<<"input the node inf(a number if 0 mean over):";
cin>>num;

while(num) //在双向链表中加入结点 ,使用的是头插法
{
p=new Node;
p->data=num;
p->next=hlink->next;
hlink->next->pre=p;
hlink->next=p;
p->pre=hlink;
cout<<"input the node inf(a number if 0 mean over):";
cin>>num;
}
show(hlink);

cout<<"input the node inf you want to del:";//删队指定数据的结点
cin>>del;
p=hlink->next;
while(p)
{
if(p->data==del)
{
q=p;
p=p->pre;
p->next=q->next;
q->next->pre=p;
free(q);
}
p=p->next;
}
show(hlink);
system("PAUSE");
return EXIT_SUCCESS;
}

void show(Link h)
{
Link p,q;
p=h->next;
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
}

本想用函数实现的,可不知道为啥说我参数需要转换,,调试了一天还是不行啊
哥们凑合着用吧
温馨提示:内容为网友见解,仅供参考
无其他回答

C++ 双向链表 插入1,2,3,4,5,6,7,8,9,10到随机任意位置 然后再按1-1...
include <stdlib.h> include \/\/定义双向链表结构类型 typedef struct NODE { int data;struct NODE *prior;\/\/前趋 struct NODE *next; \/\/后继 }LNodeo,*LinkList;\/\/打印双向链表 void PrintfLink(LinkList phead){ if(phead == NULL)printf("双向链表为空!\\n");while(phead !=NULL)...

双向链表的通讯录或电话簿···实现 总之能对双链表进行查找删除插入...
cout<<"* 1.增加名片 *"<<endl;cout<<"* 2.插入名片 *"<<endl;cout<<"* 3.删除名片 *"<<endl;cout<<"* 4.查找名片 *"<<endl;cout<<"* 5.显示名片 *"<<endl;cout<<"* 6.退出 *"<<endl;cout<<"***"<<endl;cout<<"请输入菜单选项(...

c++ 编写一个线程安全的双向链表,要代码!
include <stdio.h> include <stdlib.h> include <afxmt.h> struct dllist { int number;struct dllist *next;struct dllist *prev;};CCriticalSection mysec;struct dllist *head, *tail;void initial_node(struct dllist *lnode);void append_node(struct dllist *lnode);void insert_node(s...

...能够实现链表结点的插入(insert)、删除(delete),
*R; node(int val):data(val),L(0),R(0){}; node::~node() { L=NULL; R=NULL; } }; class list { public: list(){first=0;last=0;} void push_back(int val); void insert(int i,int x); void DELETE(int i);

c++引用问题\/双向链表初始化及销毁
第二个问题:还有比如是双向链表 为什么清空不用引用 而销毁用引用呢?答:其实就清空过程,用不用引用都会清空。clearList函数用引用或者指针也是一样的。之所以在destroyList函数里面用引用,是有一句 pHead=NULL。假设外部调用过程 pNode p; ... destroyList( p ); \/\/完了之后p就变为NULL了外...

帮忙用C++编一下:以二叉链表为存储结构,在二叉树中删除以值x为根结点...
} } int main(){ char str[100],x;BTnode *b;printf("请输入二叉树的字符串:");gets(str);printf("\\n要删除的子树的根节点为:");scanf("%c",&x);create(b,str);printf("\\n删除根节点为%c的子树后的二叉树字符串为:",x);Delete(b,x);printf("\\n\\n");system("pause");...

链表中的怎么使用指针进行链表的建立、插入、删除等处理操作
cout << "链表中不存在此数据:" << data << endl;else{ \/\/那么跳出循环的情况就只能是ptrNext->info == data啦,此处删除ptrNext;ptr->next = ptrNext->next; \/\/释放ptrNext指向的堆内存之前,要把 \/\/ptrNext之前的节点,也就是ptr,将其指向prtNext指向的地方 delete ptrNext; ...

怎样C++实现线性表的建立、插入、删除、倒序?
cout<<"链表插入结束链表建成!"<<endl;}void LinkList::insert(){ cout<<"要插入元素的位置:"<<endl; int i; cin>>i;cout<<"要插入的元素:"<<endl;ElemType x;cin>>x; NodeType *p,*q,*s; \/\/定义结构体类型指针 int k=1; p=Head; \/\/让p指向Head节点 q=p->next; \/\/让q指向第一个节点...

那个,用c++编程学生通讯录管理系统 求代码。。。
void DeleteNode(); \/\/删除结点,分3情况,删除头部,尾部,中间 void DeleteNodeAtHead();void DeleteNodeAtEnd();void DeleteNodeAtMiddle();void SaveFile();void LoadFile();\/\/ void Help();void Showmenu();void ModifyRecord();};void Record::InsertRecord() \/\/插入记录,分3种情况...

用c++语言实现双向链表的排序
}\/\/ 冒泡排序对链表进行排序void BubbleSort(Node *head) {Node *pTemp;int maxIdx, idx;\/\/ 计算链表长度maxIdx = 0;for (pTemp = head; pTemp != NULL; pTemp = pTemp->next)++maxIdx;idx = 0;while (idx < maxIdx-1) {for (pTemp = head; idx < maxIdx-1; pTemp = pTemp->...

相似回答