當前位置:編程學習大全網 - 編程語言 - c語言編程,怎麽把鏈表的頭刪掉,急!?

c語言編程,怎麽把鏈表的頭刪掉,急!?

#include <iostream>

#include <assert.h>

using namespace std;

struct LinkNode{

char data;

struct LinkNode *link;

LinkNode(){int data=0;LinkNode *top=NULL;}

};

class LinkedStack{

private:

LinkNode *top;

int size;

public:

LinkedStack(){top = NULL ;};

~LinkedStack(){makeEmpty();};

void push(char x);

char pop();

bool makeEmpty();

int getSize();

bool getTop();

bool isEmpty();

};

void LinkedStack::push(char x){

LinkNode *newNode=new LinkNode;

newNode->data=x;

newNode->link=top;

top=newNode;

size++;

assert(top!=NULL); };

bool isEmpty(){

if(top == NULL)return true; //這裏老是提示top為“未定義標識符”怎麽辦?

return false;

//return (top==NULL)?true:false;這種寫法也提示出錯

};

char LinkedStack::pop() {

char x;

if(isEmpty()==true){

cout<<"空鏈表,沒有出棧的元素了哦,傻瓜!"<<endl;

return false;}

LinkNode *p=top;

top= top->link;

x=p->data;

delete p;

return x;

};

bool LinkedStack::makeEmpty(){ //使鏈表全部清空

LinkNode *p;

cout<<"進行元素清空處理"<<endl;

while(top!= NULL){p=top;top=top->link;delete p;}

cout<<"小鬼,鏈式棧的元素已經清空完畢 !"<<endl;

return true;

};

int LinkedStack::getSize(){ //獲得表的長度

LinkNode *p=top;

int k =0;

while(top!=NULL){

top=top->link; k++;

}

cout<<"現在鏈表的長度為 :"<<k<<endl;

return k;

};

void main (){

LinkedStack lstack;

int n ;

cout<<"請輸入妳要輸入的字符總長度(小於100) :"<<endl;

cin>>n;

//char *p = new expression[100];

char expression[100];

cout<<"請輸入妳要測試的符號內容 :"<<endl;

for(int i=0;i<n;i++){

cin>>expression[i];

}

for(int j=0;j<n ;j++){

if(expression[j] ==( '('||'{'||'[')){

lstack.push(expression[j]);

}

if(expression[j] == (')'||'}'||']')){

if( expression[j] == lstack.pop()){

cout<<"第"<<j+1<<"處的字符有匹配的括號"<<endl;

}else{

cout<<"第"<<j+1<<"處的字符沒有匹配的括號"<<endl;

}

}

}

while(lstack.isEmpty() == false){

int d = lstack.getSize();

cout<<"不能匹配的括號個數為 :"<<d<<endl;

cout<<"它們分別為: "<<endl;

for(int k=0;k<=d;k++){

lstack.pop();

}

}

lstack.makeEmpty();

system("Pause");

}

  • 上一篇:軟件測試有哪些方法
  • 下一篇:怎樣建網站?
  • copyright 2024編程學習大全網